2013-05-10 2 views
0

Im, создающий тему для wordpress, и мне нужно использовать некоторый jQuery. Ive нашел биты кода онлайн, и я сам сделал несколько бит. Однако при использовании jQuery, предоставляемого wordpress, он находится в режиме noConflict и вместо использования $ устанавливается значение «jQuery». Это нормально, но я не хочу изменять весь свой код и любой код, который я нахожу в Интернете, чтобы использовать «jQuery» вместо $.Pass Jquery alias в javascript function

Так что это говорит мне, что, разместив в конце function ($), вы можете использовать $ как псевдоним jQuery, но только в области функций. Это прекрасно, но я надеялся, что он будет работать и переходить к функциям, которые я вызываю изнутри этой области. Вот где моя проблема. Как я могу создать код jQuery, который использует $ внутри моей функции resizeandcenter.

jQuery('.artworklist > li > a > img').load(function ($){ 
    resizeitems('artworklist'); 
}); 

Это моя функция, что я хочу, чтобы иметь возможность использовать $ внутри, как я не хочу, чтобы изменить весь мой код/​​и любой код, который я нашел в Интернете.

function resizeitems(elementname){ 
    //Do some jquery stuff using $ 
} 

Возможно, есть альтернативный способ сделать то, что я делаю, или я делаю это неправильно?

EDIT:

Моей функция «resizeitems» на своем собственном в JS файл Thats включен в моем заголовке страницы.

Другой код, код jQuery в моем первом блоке кода находится внизу страницы в блоке сценария.

Так что, я немного не уверен в ответе, говоря, чтобы обернуть мою функцию?

+0

http://stackoverflow.com/about – Xotic750

ответ

0

Вам необходимо передать jQuery в закрытие верхнего уровня, содержащее ваш код. Обычно это внутри вызова $(document).ready(). Простой пример выглядит следующим образом:

jQuery(function($) { 
     function resizeitems(elementname){ 
      //Do some jquery stuff using $ 
     } 
     $('.artworklist > li > a > img').load(function(){ 
      resizeitems('artworklist'); 
     }); 
}); 

jQuery теперь псевдонимы к $ внутри этого закрытия.

+0

У меня нет закрытия верхнего уровня. 'JQuery ('. Artworklist> li> a> img'). Load (function ($) {' block непосредственно после тега '

1

Вы можете обернуть весь код в себя выполнение закрытия (или на готовом закрытия/нагрузки), как этот

(function ($) { 
    // do your stuff here 
}(jQuery)); 

Затем вы можете использовать $ в течение этого закрытия

Вот пример на jsfiddle для вас

window.addEventListener("load", function() { 
    (function ($jq) { 
     $jq("body").append($jq("<div>").text("hello")); 
    }(jQuery)); 
}, false); 

Ниже приведен пример использования слушателя ready событий Jquery в

jQuery(document).ready(function() { 
    (function ($jq) { 
     $jq("body").append($jq("<div>").text("hello")); 
    }(jQuery)); 
}); 

На jsfiddle

Или еще одной альтернативы в JQuery, в основном синтаксис изменения, as suggested от @Mathletics

jQuery(function($jq) { 
     $jq("body").append($jq("<div>").text("hello")); 
}); 

На jsfiddle

+0

Это правильный способ использования оперативно вызываемого функционального выражения (IIFE) –

+0

Привет, я видел несколько бит, как это раньше, но я действительно, не вижу или не понимает, как использовать его в моем случае. – binarysmacker

+0

Я думаю, что вы отбрасываете OP, переключая пример привязки события. – Mathletics

0

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

var $ = jQuery; 

Вы даже можете установить его в глобальном масштабе, но может повлиять на другое использование $ на странице, если она была использована для чего-то еще:

window.$ = jQuery; 
+0

Это работает! Но это означает, что любой тип функции или код, который я пишу, мне нужно включить эту строку вверху? Я надеялся на какой-то метод, где мне не нужно было бы изменять или добавлять и добавлять код, может быть, он не существует? – binarysmacker

+0

Вопрос здесь был бы, почему они сделали его noConflict? Возможно, $ уже используется для чего-то другого, и это просто перезапишет его, нарушая веб-страницу. – Xotic750

+0

Хорошей практикой является использование какой-либо области все время и не загрязнять глобальную сферу. Поэтому, если вы правильно указали область видимости, вам нужно будет определить это только один раз для всей области. –