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

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

清单 1 所示。

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

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

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

清单 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选择器来进行实例化。

var elements = $("#myId"); 

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

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

var elements = $("p"); 

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

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

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的方法。

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

$("#msg").html();   
$("#msg")[0].innerHTML;  
$("#msg").eq(0)[0].innerHTML;  
$("#msg").get(0).innerHTML;  

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

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

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

Jquery中的很多方法都是如此,主要包括如下几个:
$("#msg").html(); //返回id为msg的元素节点的html内容。   
$("#msg").html("<b>new content</b>");   //将“<b>new content</b>” 作为html串写入id为msg的元素节点内容中,页面显示粗体的new content   
$("#msg").text(); //返回id为msg的元素节点的文本内容。   
$("#msg").text("<b>new content</b>");   //将“<b>new content</b>” 作为普文本串写入id为msg的元素节点内容中,页面显示<b>new content</b>   
$("#msg").height(); //返回id为msg的元素的高度   
$("#msg").height("300"); //将id为msg的元素的高度设为300  
$("#msg").width(); //返回id为msg的元素的宽度   
$("#msg").width("300"); //将id为msg的元素的宽度设为300   
$("input").val(); //返回表单输入框的value值   
$("input").val("test"); //将表单输入框的value值设为test   
$("#msg").click(); //触发id为msg的元素的单击事件   
$("#msg").click(fn); //为id为msg的元素单击事件添加函数  

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

5、集合处理功能

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

包括两种形式:

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

6、支持方法的连写

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

例如:

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

7、操作元素的样式

主要包括以下几种方式:

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

8、完善的事件处理功能

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

如:

$("#msg").click(function(){alert("good")}) //为元素添加了单击事件   
$("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):通用的迭代函数。可用于近似地迭代对象和数组(代替循环)。

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

等价于:

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

也可以处理json数据,如

结果为:

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")。如:

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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值