Chinaunix首页 | 论坛 | 博客
  • 博客访问: 430657
  • 博文数量: 113
  • 博客积分: 2228
  • 博客等级: 大尉
  • 技术积分: 1341
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-24 15:07
文章分类

全部博文(113)

文章存档

2013年(52)

2012年(61)

我的朋友

分类: 系统运维

2012-11-02 12:02:09

jQuery 基本操作

 

jQuery 是一个轻量级的javascript类库, 只有14k(未压缩的版本有77k)

 

jQuery 有什么好处呢?

我想好处有以下几点:

1. 简化了html对象的操作, 起码写的字少了, 而且原来需要自己写循环做的, 现在一句话就搞定

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 对象, 而不是html元素. 所以一些普通的用法, 比如InnerHTML都是无效的.

 

1. 选取元素

$(”#myid”)效果等于document.getElementById(”myid”), 但是写的字符要少好多啊.

 

如果需要将 jQuery 对象转换成html元素, 则只需要取其第0个元素即可. 例如$(”#myid”)返回的是 jQuery 对象, 而$(”#myid”)[0]返回的就是html元素

 

如果选择所有的img元素, 那么这么写: $(”img”)

 

如果选择带有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(” ” , “q= jquery”, function(data, status){alert(data)})

表示请求,参数是q, 参数的值是 jquery , 请求结束后(不管成功还是失败)执行后面的function,该function有两个固定参数, data和status, data是返回的数据, status是本次请求的状态

用post方法请求一个页面

$.post(……..) 参数同get方法

 

7.其他方法

$.trim(str) 将str前后空格去掉

$.browser 返回当前用户浏览器的类型

$.browser.version返回当前浏览器的版本

 

8. 插件

jQuery 支持插件, http:// jquery .com/plugins/ 上面有很多现成的插件, 也可以自己写

自己写插件,

 

原文:

阅读(1236) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~