jQuery (документ) .ready и передает '$' - PullRequest
4 голосов
/ 07 июня 2011

У меня есть файл js, который я включаю в свой шаблон Wordpress. Есть ли способ получить доступ к функции '$' внутри моего объекта 'MediaBrowser' без необходимости неуклюже передавать ее в качестве аргумента?

Спасибо, Стив

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

Ответы [ 4 ]

3 голосов
/ 07 июня 2011

Используйте функцию автоматического вызова, чтобы получить доступ к jQuery через $.Есть много причин, по которым вы хотели бы сделать это, поэтому не слушайте других людей, говорящих вам, чтобы просто получить доступ к нему глобально ...

var MediaBrowser = (function($) {
  return {    
    initialize:function(){
      $("a[rel^='mediaBrowser']").prettyPhoto();
    }
  };
}(jQuery));
2 голосов
/ 07 июня 2011
var MediaBrowser = {
    initialize:function(){
        var $ = jQuery; //local var or just use `jQuery` below
        $("a[rel^='mediaBrowser']").prettyPhoto();
    }   
};
jQuery(document).ready(function(){
    MediaBrowser.initialize();
});
1 голос
/ 07 июня 2011

Полагаю, у вас где-нибудь есть конфликты? Вы можете создать закрытие для MediaBrowser. Имейте в виду, что его нужно будет выполнить после загрузки jQuery.

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

    return {
        init : function() {
            // blah jquery stuff using $(..) syntax
        }
        ...
    }
}();
0 голосов
/ 07 июня 2011

Всегда можно обернуть в анонимную функцию (но тогда, из-за области видимости, вам понадобится полная детализация, чтобы сделать MediaBrowser частью window:

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


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