中国第一Ajax站长门户:www.okajax.com   虚拟主机 域名注册 云主机

jquery选择器(美元符号)的实例化应用 - okajax.com - Ajax中国

我要投稿 会员登陆 RSS订阅 本站推荐:
您的位置主页 > Ajax技术 > Ajax框架学习 > jquery.js > jquery选择器(美元符号)的实例化应用

jquery选择器(美元符号)的实例化应用

2011-07-01    文章来源:互联网    浏览次数:

jQuery框架 jQuery 是一个JavaScript 库,它有助于简化 JavaScript? 以及 Asynchronous JavaScript + XML (Ajax) 编程。与类似的 JavaScript 库不同,jQuery 具有独特的基本原理,可以简洁地表示常见的复杂代码。学习 jQuery 基本原理,探索其特性和功能,执行一些常见的 Ajax 任务并掌握如何使用插件扩展 jQuery。

清单 1 所示。

  1. var external_links = document.getElementById('external_links');  
  2. var links = external_links.getElementsByTagName('a');  
  3. for (var i=0;i < links.length;i++) {  
  4.     var link = links.item(i);  
  5.     link.onclick = function() {  
  6.          return confirm('You are going to visit: ' + this.href);  
  7.     };  

清单 2 显示了使用 jQuery 实现的相同的功能。

  1. $(#external_links a).click(function() {  
  2.     return confirm(You are going to visit: + this.href);  
  3. }); 

清单 2. 使用了 jQuery 的 DOM 脚本 是不是很神奇? 使用 jQuery,您可以把握问题的要点,只让代码实现您想要的功能,而省去了一些繁琐的过程。无需对元素进行循环,click() 函数将完成这些操作。同样也不需要进行多个 DOM 脚本调用。您只需要使用一个简短的字符串对所需的元素进行定义即可。

理解这一代码的工作原理可能会有一点复杂。首先,我们使用了 $() 函数 —— jQuery 中功能最强大的函数。通常,我们都是使用这个函数从文档中选择元素。在本例中,一个包含有一些层叠样式表(Cascading Style Sheet,CSS)语法的字符串被传递给函数,然后 jQuery 尽可能高效地把这些元素找出来。

如果您具备 CSS 选择器的基本知识,那么应该很熟悉这些语法。在 清单 2 中,#external_links 用于检索 id 为 external_links 的元素。a 后的空格表示 jQuery 需要检索 external_links 元素中的所有 <a> 元素。用英语说起来非常绕口,甚至在 DOM 脚本中也是这样,但是在 CSS 中这再简单不过了

一、 jQuery如何进行实例化

上一小节对jQuery进行了解释,在解释中,运用了一个实例来说明其在代码上的精简性,在这之中谈到了$() ,这是整个jQuery库中最为核心的一部分,所有的函数都必须先经过它,才可对库中的方法进行调度。$() 函数这就是jQuery的实例化操作函数,只有jquery对象才可运用库中的其他函数,否则将拒绝访问,提示错误。

返回值:$(expr, context)) 函数返回一个含有所有与 CSS 选择器匹配的元素的 jQuery 对象

jQuery 对象 类似于数组,但是它附带有大量特殊的 jQuery 函数。比方说,您可以通过调用 click 函数把 click 处理函数指定给 jQuery 对象中的所有元素。

还可以向 $() 函数传递一个元素或者一个元素数组,该函数将把这些元素封装在一个 jQuery 对象中。

下面介绍一些比较常用的实例化事例

示例 1 - 使用 jQuery的 ID选择器来进行实例化。

  1. var elements = $("#myId"); 

以上代码,将获取到ID为myId的jquery对象 .相当于DOM中document.getElementById('myId'),不同点为,后者返回的是一个DOM对象

示例2 - 使用 jQuery 的标签选择器进行实例化

  1. var elements = $("p"); 

以上代码,将获取整个DOM文档中所有标签为p的jquery对象,相当于DOM中的document.getElementsByTagName('p'),不同点为,后者返回多个标签为 p的DOM对象.

示例3 - 使用 jQuery 的css样式选择器进行实例化

  1. var elements = $(".container"); 

以上返回的均为jQuery 对象 ,结构上类似于数组。因为它返回的是jquery对象,所以可以进行方法的链接使用。

介绍一简单的调用例子 说明 :获取html文档中ID为message的元素(返回的是jquery对象),设置它的background为yellow,它的innerHtml内容为hello,并显示出来

示例

原Html :<div id=”message”></div>

结果: <div id=”message” style=”background:yellow;display:block;”>Hello!</div>

备注 :如果 display:none的话,将变为display:block或display:inline;

二、 jQuery如何在页面中进行引用

在需要使用JQuery的页面中引入JQuery的js文件即可。

例如:<script type="text/javascript" src="js/jquery.js"></script>

具体的路径,可以根据实际情况,来对”src”进行改动。引入之后便可在页面的任意地方使用jQuery提供的语法。

三、 jQuery 的使用

具体的使用查看相关的示例

四、 jQuery 使用的注意事项

1、关于页面元素的引用

通过jquery的$()引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法。

2、jQuery对象与dom对象的转换

只有jquery对象才能使用jquery定义的方法。注意dom对象和jquery对象是有区别的,调用方法时要注意操作的是dom对象还是jquery对象。

普通的dom对象一般可以通过$()转换成jquery对象。

如:$(document.getElementById("msg"))则为jquery对象,可以使用jquery的方法。

由于jquery对象本身是一个集合。所以如果jquery对象要转换为dom对象则必须取出其中的某一项,一般可通过索引取出。

如:$("#msg")[0],$("div").eq(1)[0],$("div").get()[1],$("td")[5]这些都是dom对象,可以使用dom中的方法,但不能再使用Jquery的方法。

以下几种写法都是正确的:

  1. $("#msg").html();   
  2. $("#msg")[0].innerHTML;   
  3. $("#msg").eq(0)[0].innerHTML;   
  4. $("#msg").get(0).innerHTML;  

3、如何获取jQuery集合的某一项

对于获取的元素集合,获取其中的某一项(通过索引指定)可以使用eq或get(n)方法或者索引号获取,要注意,eq返回的是jquery对象,而get(n)和索引返回的是dom元素对象。对于jquery对象只能使用jquery的方法,而dom对象只能使用dom的方法,如要获取第三个<div>元素的内容。有如下两种方法:

  1. $("div").eq(2).html(); //调用jquery对象的方法   
  2. $("div").get(2).innerHTML; //调用dom的方法属性  

4、同一函数实现set和get

Jquery中的很多方法都是如此,主要包括如下几个:

  1. $("#msg").html(); //返回id为msg的元素节点的html内容。   
  2. $("#msg").html("<b>new content</b>");   
  3. //将“<b>new content</b>” 作为html串写入id为msg的元素节点内容中,页面显示粗体的new content   
  4. $("#msg").text(); //返回id为msg的元素节点的文本内容。   
  5. $("#msg").text("<b>new content</b>");   
  6. //将“<b>new content</b>” 作为普文本串写入id为msg的元素节点内容中,页面显示<b>new content</b>   
  7. $("#msg").height(); //返回id为msg的元素的高度   
  8. $("#msg").height("300"); //将id为msg的元素的高度设为300   
  9. $("#msg").width(); //返回id为msg的元素的宽度   
  10. $("#msg").width("300"); //将id为msg的元素的宽度设为300   
  11. $("input").val(); //返回表单输入框的value值   
  12. $("input").val("test"); //将表单输入框的value值设为test   
  13. $("#msg").click(); //触发id为msg的元素的单击事件   
  14. $("#msg").click(fn); //为id为msg的元素单击事件添加函数  

同样blur,focus,select,submit事件都可以有着两种调用方法

5、集合处理功能

对于jquery返回的集合内容无需我们自己循环遍历并对每个对象分别做处理,jquery已经为我们提供的很方便的方法进行集合的处理。

包括两种形式:

  1. $("p").each(function(i){this.style.color=['#f00',' #0f0','#00f'][i]})   
  2. //为索引分别为0,1,2的p元素分别设定不同的字体颜色。 $("tr").each(function(i){this.style.backgroundColo r=['#ccc','#fff'][i%2]}) //实现表格的隔行换色效果   
  3. $("p").click(function(){alert($(this).html())})   
  4. //为每个p元素增加了click事件,单击某个p元素则弹出其内容  

6、支持方法的连写

所谓连写,即可以对一个jquery对象连续调用各种不同的方法。

例如:

  1. $("p").click(function(){alert($(this).html())})   
  2. .mouseover(function(){alert('mouse over event')})   
  3. .each(function(i){this.style.color=['#f00','#0f0''#00f'][i]});  

7、操作元素的样式

主要包括以下几种方式:

  1. $("#msg").css("background"); //返回元素的背景颜色   
  2. $("#msg").css("background","#ccc"//设定元素背景为灰色   
  3. $("#msg").height(300); $("#msg").width("200"); //设定宽高   
  4. $("#msg").css({ color: "red", background: "blue" });//以名值对的形式设定样式   
  5. $("#msg").addClass("select"); //为元素增加名称为select的class   
  6. $("#msg").removeClass("select"); //删除元素名称为select的class   
  7. $("#msg").toggleClass("select"); //如果存在(不存在)就删除(添加)名称为select的class  

8、完善的事件处理功能

Jquery已经为我们提供了各种事件处理方法,我们无需在html元素上直接写事件,而可以直接为通过jquery获取的对象添加事件。

如:

  1. $("#msg").click(function(){alert("good")}) //为元素添加了单击事件   
  2. $("p").click(function(i){this.style.color=['#f00''#0f0','#00f'][i]})  

9、几个实用特效功能

其中toggle()和slidetoggle()方法提供了状态切换功能。

如toggle()方法包括了hide()和show()方法。

slideToggle()方法包括了slideDown()和slideUp方法。

10、几个有用的jQuery方法

$.browser.浏览器类型:检测浏览器类型。有效参数:safari, opera, msie, mozilla。如检测是否ie:$.browser.isie,是ie浏览器则返回true。

$.each(obj, fn):通用的迭代函数。可用于近似地迭代对象和数组(代替循环)。

  1. $.each( [0,1,2], function(i, n){ alert( "Item #" + i + ": " + n ); });  

等价于:

  1. var tempArr=[0,1,2];   
  2. for(var i=0;i<tempArr.length;i++){   
  3. alert("Item #"+i+": "+tempArr[i]);   
  4. }  

也可以处理json数据,如

  1. $.each( { name: "John", lang: "JS" }, function(i, n){ alert( "Name: " + i + ", Value: " + n ); });  

结果为:

Name:name, Value:John

Name:lang, Value:JS

$.map(array, fn):数组映射。把一个数组中的项目(处理转换后)保存到到另一个新数组中,并返回生成的新数组。

如:

var tempArr=$.map( [0,1,2], function(i){ return i + 4; });

tempArr内容为:[4,5,6]

var tempArr=$.map( [0,1,2], function(i){ return i > 0 ? i + 1 : null; });

tempArr内容为:[2,3]

$.merge(arr1,arr2):合并两个数组并删除其中重复的项目。

如:$.merge( [0,1,2], [2,3,4] ) //返回[0,1,2,3,4]

$.trim(str):删除字符串两端的空白字符。

如:$.trim(" hello, how are you? "); //返回"hello,how are you? "

11、解决自定义方法或其他类库与jQuery的冲突

很多时候我们自己定义了$(id)方法来获取一个元素,或者其他的一些js类库如prototype也都定义了$方法,如果同时把这些内容放在一起就会引起变量方法定义冲突,Jquery对此专门提供了方法用于解决此问题。

使用jquery中的jQuery.noConflict();方法即可把变量$的控制权让渡给第一个实现它的那个库或之前自定义的$方法。之后应用Jquery的时候只要将所有的$换成jQuery即可,如原来引用对象方法$("#msg")改为jQuery("#msg")。如:

  1. jQuery.noConflict(); // 开始使用jQuery   
  2. jQuery("div p").hide();   
  3. // 使用其他库的 $()   
  4. $("content").style.display = 'none';  

 

文章评论(查看全部)

看不清楚?单击换一张。
loading.. 评论加载中....
关于我们 - 广告服务 - 版权隐私 - 免责声明 - RSS地图 - 网站地图 - 使用帮助 - 返回顶部