Почему не запускается jQuery.

Я играл с этой прошлой ночью и этим утром. На моем сайте WordPress я добавил раскрывающийся список на страницу, чтобы пользователь мог выбрать способ подписки подкаста (точно так же, как метод TWiT.tv).

В редакторе страниц у меня есть следующий код.

<select id="subscribe-dropdown"><option value="0">Subscribe to Show</option>
 <option value="itms://mikewills.me/blog/category/show/bizdevtalk/feed/">iTunes</option>
 <option value="http://fusion.google.com/add?feedurl=http%3A//mikewills.me/blog/category/show/bizdevtalk/feed/">Google</option>
 <option value="winamp://Podcast/Subscribe?url=pcast://mikewills.me/blog/category/show/bizdevtalk/feed/">Winamp</option>
 <option value="zune://subscribe/?BizDevTalk=http://mikewills.me/blog/category/show/bizdevtalk/feed/">Zune</option>
 <option value="pcast://mikewills.me/blog/category/show/bizdevtalk/feed/">Other podcast clients (pcast:// compatible)</option>
 <option value="http://mikewills.me/blog/category/show/bizdevtalk/feed/">RSS</option>
</select>

Поскольку это общедоступно, страницу можно найти по адресу http://mikewills.me/podcastmike/bizdevtalk/.

Однако .change() не запускается, когда я запускаю его при отладке. Это проблема страницы WordPress или что-то не совсем верно?

3 ответа

Вы используете jQuery в режиме noConflict, вы должны использовать jQuery вместо $

jQuery(function () {
 jQuery("#subscribe-dropdown").change(function() {
 if (jQuery("#subscribe-dropdown option:selected").val() != "0"){
 window.open(jQuery("#subscribe-dropdown option:selected").val());
 };
 });
});


Описание

Я проверил ваш код на jsFiddle и событие активируется.

Поэтому я думаю, что это конфликт с другой библиотекой javascript.

Вы можете изменить $ на jQuery чтобы убедиться, что его обработал jQuery.

Образец

jQuery(function () {
 jQuery("#subscribe-dropdown").change(function() {
 if (jQuery("#subscribe-dropdown option:selected").val() != "0"){
 window.open(jQuery("#subscribe-dropdown option:selected").val());
 };
 });
});

Больше информации


Попробуйте изменить его на

jQuery(function($) {
 $("#subscribe-dropdown").change(function() {
 if ($("#subscribe-dropdown option:selected").val() != "0") {
 window.open($("#subscribe-dropdown option:selected").val());
 };
 });
});

Или, наоборот, оберните его в $(document).ready(function() {/** your code in here **/});

licensed under cc by-sa 3.0 with attribution.