jQuery 中 $含义与用法
在jQuery中,最常用的美元符号$,提供了丰富功能。
$包括选择页面中一个或一类元素、作为功能函数的前缀、windows.onload的完善,创建DOM节点等。
$就是jQuery的别称
jQuery就是jQuery库提供的一个函数,$是jQuery的别称
例如:$.ajax(options) 等同 jQuery.ajax(options))
$函数的作用是根据 () 里的参数进行查找和选择html文档中的元素, 函数作用之一就是GetElementByID的代替,但()内不仅可以是ID,还可以是各类选择器
比如:$(document)就是选取整个文档对象
那是不是只可以用$来代替,不是。
为了防止命名冲突,jQuery库提供了另外的机制来给jQuery函数起另外的别名。
例如:
var jq = jQuery.noConflict(); // Do something with jQuery jq("div p").hide(); // Do something with another library's $() $("div p").style.display = 'none';
在代码里,自定义用 jq 代替 jQuery 和 $
jQuery 选择器的通用语法
$(selector) 或者 jQuery(selector)
其中,selector符合css标准,甚至css3的标准,例如:
$("#showDiv")
id唯一标识选择器,这相当于javascript中,document.getElementById("shouDiv"),可以看到jQuery的变色方法简洁很多。
$(".newClass")
class类别选择器,选择css类别为"newClass"元素的节点,在javascript要实现相同的选择,需要用for循环遍历整个DOM
$("p:odd")
特定一组类的选择所有奇数行的p元素,几乎所有的标记都可以使用 ":odd"和":even"选择奇偶的选择。
$("td:nth-child(1)")
选择所有表格行的第一个单元格,就是第一列。这在修改表格的某一列是非常有用的,不再需要一行行的遍历表格。
$("li>a")
子选择器,返回<li>下标记的<a>元素,不包括孙元素标记
$("a[herf$=pdf]")
属性选择器,选择所有超链接,并且这些链接是以pdf结尾的。
$('div>ul')和$('div ul') 有区别
$('div>ul')是<div>的直接后代里找<ul>
$('div ul')是在<div>的所有后代里找<ul>
(function($){...})(jQuery) 含义
function(arg){...}
定义了一个匿名函数,参数为arg
而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:
( function(arg){...} )(param)
这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数
( function($){...} )(jQuery)
则是一样的,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery
var fn = function($){....}; fn(jQuery);
jQuery $命名冲突解决方案
米扑博客在做米扑打赏赞助功能时,遇到了一个js问题,即同时引用了jquery库和另外一个js库,当用$("#abc")去调用js库函数时,发现提示错误!
于是网上查找了很多资料,原来是jquery命名冲突了。
本文将总结米扑博客解决jQuery $命名冲突的解决方案。
因为许多JavaScript 库使用$作为函数或变量名,jquery也一样。
其实,$只是jquery的一个别名而已,假如需要使用jquery 之外的另一js库,可以通过调用 $.noConflict() 向该库返回控制权。
方案1:分别使用 jQuery 和 $
<!-- 引入 prototype --> <script src="prototype-1.6.0.3.js" type="text/javascript"></script> <!-- 引入 jQuery --> <script src="/scripts/jquery-1.3.1.js" type="text/javascript"></script> <p>test jQuery</p> <p id="pp">test prototype</p> <script type="text/javascript"> jQuery.noConflict(); // 将变量$的控制权让渡给prototype.js jQuery(function(){ // 使用jQuery jQuery("p").click(function(){ alert( jQuery(this).text() ); }); }); $("pp").style.display = 'none'; // 使用prototype </script>
方案2:自定义 $jq
<!-- 引入 prototype --> <script src="prototype-1.6.0.3.js" type="text/javascript"></script> <!-- 引入 jQuery --> <script src="/scripts/jquery-1.3.1.js" type="text/javascript"></script> <p>test jQuery</p> <p id="pp">test prototype</p> <script type="text/javascript"> var $jq = jQuery.noConflict(); // 自定义一个比较短快捷方式 $jq(function(){ // 使用jQuery $jq("p").click(function(){ alert( $jq(this).text() ); }); }); $("pp").style.display = 'none'; // 使用prototype </script>
方案3:统一使用$
<!-- 引入 prototype --> <script src="prototype-1.6.0.3.js" type="text/javascript"></script> <!-- 引入 jQuery --> <script src="/scripts/jquery-1.3.1.js" type="text/javascript"></script> <p>test jQuery</p> <p id="pp">test prototype</p> <script type="text/javascript"> jQuery.noConflict(); // 将变量$的控制权让渡给prototype.js jQuery(function($){ // 使用jQuery $("p").click(function(){ // 继续使用 $ 方法 alert( $(this).text() ); }); }); $("pp").style.display = 'none'; // 使用prototype </script>
方案4:调用匿名函数
<!-- 引入 prototype --> <script src="prototype-1.6.0.3.js" type="text/javascript"></script> <!-- 引入 jQuery --> <script src="/scripts/jquery-1.3.1.js" type="text/javascript"></script> <p>test jQuery</p> <p id="pp">test prototype</p> <script type="text/javascript"> jQuery.noConflict(); // 将变量$的控制权让渡给prototype.js (function($){ // 定义匿名函数并设置形参为$ $(function(){ // 匿名函数内部的$均为jQuery $("p").click(function(){ // 继续使用 $ 方法 alert($(this).text()); }); }); })(jQuery); // 执行匿名函数且传递实参jQuery $("pp").style.display = 'none'; // 使用prototype </script>
方案5:先导入jQuery
<!--先导入jQuery --> <script src="/scripts/jquery-1.3.1.js" type="text/javascript"></script> <!--后导入其他库 --> <script src="prototype-1.6.0.3.js" type="text/javascript"></script> <p>test jQuery</p> <p id="pp">test prototype</p> <script type="text/javascript"> jQuery(function(){ // 直接使用jQuery, 没有必要调用"jQuery.noConflict()"函数。 jQuery("p").click(function(){ alert( jQuery(this).text() ); }); }); $("pp").style.display = 'none'; // 使用prototype </script>
参考推荐:
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2018-02-13 05:47:15
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
转载注明: jQuery 中 $含义与用法 (米扑博客)