#jquery #wordpress #document-ready
#jquery #wordpress #документ готов
Вопрос:
У меня есть js-файл, который я включаю в свой шаблон WordPress. Есть ли способ получить доступ к функции ‘$’ внутри моего объекта ‘MediaBrowser’ без необходимости неуклюже передавать ее в качестве аргумента?
Спасибо, Стив
var MediaBrowser = {
initialize:function($){
$("a[rel^='mediaBrowser']").prettyPhoto();
}
};
jQuery(document).ready(function($){
MediaBrowser.initialize($);
});
Комментарии:
1. Есть ли какая-либо причина, по которой вы не можете просто использовать
jQuery
вместо$
?2. Возможно, проверьте свой рейтинг принятия, вы получите больше ответов на свои вопросы, если оставите отзыв на те, на которые уже были даны ответы.
3. @tadman: Вероятно, по той же причине у jQuery есть
.noConflict
метод? Я бы сказал, что можно с уверенностью предположить, что они используютjQuery
явно по какой-то причине, но хотели бы иметь возможность использовать$
short-hand и не допускать, чтобы это мешало.
Ответ №1:
Используйте самозапускающуюся функцию, чтобы получить доступ к jQuery через $. Есть много причин, по которым вы хотели бы это сделать, поэтому не слушайте других людей, говорящих вам просто получить к нему глобальный доступ…
var MediaBrowser = (function($) {
return {
initialize:function(){
$("a[rel^='mediaBrowser']").prettyPhoto();
}
};
}(jQuery));
Ответ №2:
var MediaBrowser = {
initialize:function(){
var $ = jQuery; //local var or just use `jQuery` below
$("a[rel^='mediaBrowser']").prettyPhoto();
}
};
jQuery(document).ready(function(){
MediaBrowser.initialize();
});
Комментарии:
1. Ах, в итоге я просто добавил $ = jQuery; в функцию .ready над инициализацией. Спасибо @Neal
Ответ №3:
Я предполагаю, что у вас где-то есть какие-то конфликты? Вы могли бы создать закрытие для MediaBrowser. Имейте в виду, его нужно будет выполнить после загрузки jQuery.
var MediaBrowser = function() {
var $ = jQuery;
return {
init : function() {
// blah jquery stuff using $(..) syntax
}
...
}
}();
Комментарии:
1. Я предполагаю, что WordPress динамически загружает jquery в режиме без конфликтов. Я новичок в WP и jquery (выхожу из prototype). Спасибо за предложение.
Ответ №4:
Всегда можно обернуть в анонимную функцию (но тогда, из-за области видимости, вам нужно было бы явно создать MediaBrowser
часть window
:
(function($){
window.MediaBrowser = {
initialize: function(){
$('<p>').text('Sample').appendTo('body');
}
};
})(jQuery);
jQuery(document).ready(function(){
MediaBrowser.initialize();
});
Комментарии:
1. Спасибо за предложение. Думаю, я не хотел делать это частью объекта window. Выше все было очень просто.