2010-10-25 67 views
0

我敢肯定,这是一个简单的问题,似乎无法让它正常工作。jQuery没有冲突模式的额外功能

我与jQuery有一些冲突,所以我使用官方文档中提到的别名功能。

jQuery(document).ready(function($){ 
    $('.loadmore').addClass('hidden'); // works fine! 

    loadmore(); 

}); 

function loadmore(){ 
    $('.loadmore').addClass('hidden'); // doesn't work! 
} 

我怎么混叠为我的代码,我扔进功能更好地组织和重用的能力工作?由于上述示例中出现的问题,我目前正在使用jQuery而不是$。以为我可以保存一些数据并使用所有教程中显示的别名。

+0

如果您在函数loadmore()中使用“jQuery”而不是“$”,那该怎么办? – cambraca 2010-10-25 04:26:13

回答

1

jQuery的任何冲突模式基本设置$功能不同的名称,例如:

$('select something').doSomethingElse(); // Works 
var $j = jQuery.noConfilct(); 
$('select something').doSomethingElse(); // Doesn't work 
$j('select something').doSomethingElse(); // Works 

如果你不希望使用$以外的名称为jQuery的你可以这样做:

(function ($) { 
    $('selector').doSomething(); 
    $('another selector').doSomethingElse(); 
}(jQuery)); 

这使得jQuery = $,但只有内部括号的,让你像往常一样工作,永远不会导致冲突。

+0

不错!我更喜欢第一个选项的想法。一个问题,但。我只是在我的文档就绪函数之前声明了'var $ j = jQuery.noConfilct();'我会很好地在该JS文件的任何位置使用'$ j'? – 2010-10-25 04:36:55

+0

@Sahas Katta是的。 :) – alex 2010-10-25 04:46:23

1

你可以试试这个...

(function($) { 

// Put all your jQuery here... and you can use $ 

})(jQuery); 
0

在这种情况下,你可以通过$给你的函数。

jQuery(document).ready(function($){ 
    $('.loadmore').addClass('hidden'); // works fine! 

    loadmore($); 

}); 

function loadmore($){ 
    $('.loadmore').addClass('hidden'); // should work fine too! 
} 
+0

首先,谢谢!但是有一个问题,我是否仍然能够通过其他变量?例如,'loadmore($,num);'并且像这样''接收它'function loadmore($,num){}' – 2010-10-25 04:33:06

+0

@Sahas Katta是的。 – alex 2010-10-25 04:45:52