我正在修改一些有很多jQuery的代码,但我不知道有些jQuery语句正在做什么.
在jQuery代码的顶部有
jQuery.noConflict
* 1.我明白那个.但是有一些代码有:
<script type="text/javascript"> (function($) { $(document).ready(function() { jQuery.fn.fixEmail = function() { { return $(this).each(function() { var $s = $(this); ...code... } } </script>
我得到那个jQuery是因为noConflict使用的.什么是参数$?
* 2.在另一个功能,他们使用
<script type="text/javascript"> jQuery(function(){ var $= jQuery; var cc = { mode : 'teaser',featureVisible : true,$loader : '<p class="loadingAnimation"><img height="32" src="' + config.xoImgUrl + '/images/ajax-loader.gif" width="32" /></p>',....more code... } } </script>
所以他们从$noConflict设置$到jQuery.但为什么?他们可以刚刚使用jQuery吗?
* 3.有一个我想要使用的插件,由
var $j = jQuery.noConflict(); var $= {}; $j(document).ready(function(){ $j.history.init(pageload); $j("a[@rel='history']").click(function(){ ...more code... }); });
我知道noConflict是什么,但是var $= {}做什么?
解决方法
示例1:
我想你错过了一些代码:
(function($) { $(document).ready(function() { jQuery.fn.fixEmail = function() { { return $(this).each(function() { var $s = $(this); ...code... } } )(jQuery); //This line was missing in your code.
让我们重写这段代码,了解发生了什么.
function complicatedFunction($) { // the document.ready call goes here. }
接下来,你怎么称之为这个功能?
complicatedFunction(someObject);
所以里面的complexFunction $是指someObject.同意?
如果你写
complicatedFunction(jQuery);
然后在函数内部,$指的是jQuery对象.所以里面的一切,complexFunction可以像普通的jQuery用户一样使用’$’.
回到原来的代码,如果我们决定不给这个功能命名,即使它成为匿名的,你可以像
(function($) { })(jQuery);
您正在创建一个匿名函数,使用一个名为$的参数.
你立即调用这个匿名函数传递它的jQuery对象.
这样,您不要修改全局$对象,而匿名函数中的所有代码都可以像$一样工作.很酷,不是吗? 原文链接:https://www.f2er.com/jquery/178861.html