2010-10-25 58 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