2011-06-07 174 views
4

我有一個js文件,我包括在我的Wordpress模板中。有沒有辦法在我的'MediaBrowser'對象中訪問'$'函數,而無需笨拙地將它作爲參數傳遞?jQuery(document).ready和'''''

謝謝你,史蒂夫

var MediaBrowser = { 
    initialize:function($){ 
     $("a[rel^='mediaBrowser']").prettyPhoto(); 
    } 
}; 
jQuery(document).ready(function($){ 
    MediaBrowser.initialize($); 
}); 
+3

是否有任何理由,你不能只用'jQuery',而不是'$' – tadman 2011-06-07 18:27:41

+5

也許檢查驗收等級,你會得到更多?回答你的問題,如果你給已經回答的人提供反饋 – stefgosselin 2011-06-07 18:28:05

+0

@tadman:可能出於同樣的原因jQuery h作爲'.noConflict'方法?我想說假設他們明確地使用'jQuery'是安全的,但是希望能夠使用''''''''''而不會干擾它。 – 2011-06-07 18:36:07

回答

2
var MediaBrowser = { 
    initialize:function(){ 
     var $ = jQuery; //local var or just use `jQuery` below 
     $("a[rel^='mediaBrowser']").prettyPhoto(); 
    } 
}; 
jQuery(document).ready(function(){ 
    MediaBrowser.initialize(); 
}); 
+0

啊,我剛剛結束了討論$ = jQuery;到初始化之上的.ready函數。謝謝@Neal – daxiang28 2011-06-07 18:50:22

+0

沒有問題^ _ ^。 – Neal 2011-06-07 18:50:58

1

我假設你有一些衝突的地方?您可以爲MediaBrowser創建一個閉包。請記住,它需要在jQuery加載後執行。

var MediaBrowser = function() { 
    var $ = jQuery; 

    return { 
     init : function() { 
      // blah jquery stuff using $(..) syntax 
     } 
     ... 
    } 
}(); 
+0

我猜WordPress的動態加載jQuery在沒有衝突模式。我對WP和jquery很陌生(脫離原型)。 Thx爲sugg。 – daxiang28 2011-06-07 23:56:20

3

使用自調用函數通過$去jQuery的訪問。有許多原因,你會想這樣做,所以不要聽別人告訴你只是訪問全局它...

var MediaBrowser = (function($) { 
    return {  
    initialize:function(){ 
     $("a[rel^='mediaBrowser']").prettyPhoto(); 
    } 
    }; 
}(jQuery)); 
+0

在我的頭上,但thx的建議。 – daxiang28 2011-06-07 23:57:02

0

總是可以在一個匿名函數包裝(但後來,由於範圍,你需要明確地做出windowMediaBrowser部分:

(function($){ 
    window.MediaBrowser = { 
     initialize: function(){ 
      $('<p>').text('Sample').appendTo('body'); 
     } 
    }; 
})(jQuery); 


jQuery(document).ready(function(){ 
    MediaBrowser.initialize(); 
}); 
+0

Thx的建議。我想我不想讓它成爲窗口對象的一部分。上面超級簡單。 – daxiang28 2011-06-07 23:57:48

相關問題