4

我有一个 js 文件,包含在我的 Wordpress 模板中。有没有办法访问我的“MediaBrowser”对象中的“$”函数,而不必笨拙地将它作为参数传递?

谢谢,史蒂夫

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

4 回答 4

3

使用自调用函数通过 $ 访问 jQuery。您想要这样做的原因有很多,所以不要听其他人告诉您只在全球范围内访问它......

var MediaBrowser = (function($) {
  return {    
    initialize:function(){
      $("a[rel^='mediaBrowser']").prettyPhoto();
    }
  };
}(jQuery));
于 2011-06-07T18:31:08.130 回答
2
var MediaBrowser = {
    initialize:function(){
        var $ = jQuery; //local var or just use `jQuery` below
        $("a[rel^='mediaBrowser']").prettyPhoto();
    }   
};
jQuery(document).ready(function(){
    MediaBrowser.initialize();
});
于 2011-06-07T18:27:50.513 回答
1

我假设你在某个地方有一些冲突?您可以为 MediaBrowser 创建一个闭包。请记住,它需要在 jQuery 加载后执行。

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

    return {
        init : function() {
            // blah jquery stuff using $(..) syntax
        }
        ...
    }
}();
于 2011-06-07T18:29:34.333 回答
0

总是可以包装在一个匿名函数中(但是,由于范围,您需要明确地MediaBrowser制作window:

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


jQuery(document).ready(function(){
    MediaBrowser.initialize();
});
于 2011-06-07T18:32:55.497 回答