在项目开发中遇到用j Query 总结以下
javascript
jQuery 有什么好处呢?css
我想好处有如下几点:html
1. 简化了html对象的操做, 起码写的字少了, 并且原来须要本身写循环作的, 如今一句话就搞定java
2. 提升了代码的浏览器兼容性. 如今的4种主流浏览器之间的js脚本或多或少都会存在兼容性问题, 用 jQuery , 会让你不用关心兼容性.好比Ajax请求, ie和firefox的对象彻底不同还有box模型的问题, 好比一个div外面加了一个边框, 而后为这个div设定一个宽度, ie和firefox对这个div的实际宽度理解的就不同. ie会认为div的实际宽度是div的宽度+边框宽度, 而firefox认为div的实际宽度就是你设定的宽度, 不过div的有效宽度就是div的宽度-边框宽度了, 这个问题会影响一个元素的实际位置. 因此必定要用 jquery 的offset方法来取元素的位置, 用width来取宽度jquery
全部的 jQuery 选择器返回值都是 jQuery 对象, 而不是html元素. 因此一些普通的用法, 好比InnerHTML都是无效的.浏览器
1. 选取元素app
$(”#myid”)效果等于document.getElementById(”myid”), 可是写的字符要少好多啊.post
若是须要将 jQuery 对象转换成html元素, 则只须要取其第0个元素便可. 例如$(”#myid”)返回的是 jQuery 对象, 而$(”#myid”)[0]返回的就是html元素this
若是选择全部的img元素, 那么这么写: $(”img”)google
若是选择带有class=”TextBox”的div元素(
), 那么这么写: $(”div.TextBox”)
选择带有myattr属性的元素$(”div[myattr]”)
选择带有myattr属性, 而且属性值等于myclass的元素$(”div[myattr=’myclass’]”)
属性不等于[myattr!=’myclass’]
属性以my开头[myattr^=’my’]
属性以class结尾[myattr$=’class’]
属性包含cla这三个字符[myattr*=’cla’]
若是一个选择会返回多个元素,而且但愿每返回一个元素, 就把某些属性应用到该元素上, 能够这么写
$(”div”).each(function()
{
$(this).css(”background-color”, “#F00″);
alert($(this).html());
$(this).width(”200px”);
});
2.事件
给页面加onload事件处理方法
$(function()
{
alert(”页面结构加载完毕, 可是可能某些图片还没有加载(通常状况下, 此事件就够用了)”);
});
能够给页面绑定多个onload事件处理方法
$(function()
{
alert(”我首先被执行”);
});
$(function()
{
alert(”我第二被执行”);
});
绑定特殊事件
$(”#myid”).keydown(function()
{
alert(”触发了keydown事件”);
});
除了这些经常使用的, 不经常使用的事件须要经过bind方法绑定
3. 元素属性/方法
获得一个元素的高度, $(”#myid”).height()
获得一个元素的位置, $(”#myid”).offset() 返回的是一个offset对象, 若是取元素位置的top, 则$(”#myid”).offset().top,?取left则$(”#myid”).offset().left
获得一个元素的innerHTML,$(”#myid”).html()
获得一个元素的innerText,$(”#myid”).text()
获得一个文本框的值, $(”#myid”).val()
获得一个元素的属性, $(”#myid”).attr(”myattribute”)
以上这些方法有个基本特征, 就是不带参数表示取值, 带有参数表示设定值(除了offset), 例如
$(”#myid”).height(”20″);
$(”#myid”).html(”< a href=”>asdasd a>”)
$(”#myid”).val(”asdasd”)
须要注意, offset是只读的.
给一个元素 设置属性 $(”#myid”).attr(”width”, “20%”)
读取一个属性 $(”#myid”).attr(”width”)
一次指定多个属性 $(”#myid”).attr({disabled: “disabled”, width:”20%”, height: “30″})
删除属性$(”#myid”).removeAttr(”disabled”)
应用样式$(”#myid”).addClass(”myclass”)
删除样式$(”#myid”).removeClass(”myclass”)
加一个样式$(”#myid”).css(”height”, “20px”)
加一组样式$(”#myid”).css({height:”20px”, width:”100px”})
须要注意的是: 若是是加一个样式, 这个样式的名字是css中的名字, 好比说style=”background-color:#FF0000″, 对应的 jQuery 写法是$(”#myid”).css(”background-color”, “#FF0000″)
可是加一组样式的时候, 样式的名字就是javascript中的css名字了, 好比:myid.style.backgroundColor = “#FF0000″, 对应的 jQuery 写法是$(”#myid”).css({backgroundColor:”#FF0000″})
4. 根据关系查找元素
找和本身同级的下一个元素$(”#myid”).next()
找和本身同级的全部位于本身之下的元素$(”#myid”).nextAll()
找和本身同级的上一个元素$(”#myid”).prev()
找和本身同级的全部位于本身之上的全部元素$(”#myid”).prl()
找本身的第一代子元素$(”#myid”).children()
找本身的第一个父元素$(”#myid”).parent()
找本身的全部父元素$(”#myid”).parents()
例子:
$(”div.l4″).parents().each(
function() {
alert($(this).html());
});
会把class=l4的div的全部父元素都获得, 而且alert出他们的html
例子:
$(”div.l4″).parents(”div.l2″).each(function() {alert($(this).html()); });
会获得class=l4的父元素, 该父元素必须是div, 并且其class=l2
这里说的全部方法, 均可以带表达式, 表达式的写法参考第一部分
5. 维护元素
在body中增长一个元素
$(”body”).append(” ’asd’ ”)
该语句会把这段html插入到body结束 标签 以前, 结果是’asd’
$(”body”).prepend(” ’asd’ ”)
该语句会把这段html插入到body开始 标签 以后, 结果是’asd’
6.AJAX
用get方法请求一个页面
$.get(” http://www.google.com” , “q= jquery”, function(data, status){alert(data)})
表示请求http://www.google.com,参数是q, 参数的值是 jquery , 请求结束后(无论成功仍是失败)执行后面的function,该function有两个固定参数, data和status, data是返回的数据, status是本次请求的状态
用post方法请求一个页面
$.post(……..) 参数同get方法
7.其余方法
$.trim(str) 将str先后空格去掉
$.browser 返回当前用户浏览器的类型
$.browser.version返回当前浏览器的版本
8. 插件
jQuery 支持插件, http:// jquery .com/plugins/ 上面有不少现成的插件, 也能够本身写
本身写插件,