Селектор Jquery не работает в Safari - PullRequest
2 голосов
/ 23 июня 2011

Я не могу заставить селектор jquery в своем javascript ниже работать в Safari (5.0.4):

$("#js-nav-bar option").click(function() {
    document.location.href = $(this).val() ;
}) ;

Просто использование "#js-nav-bar" в качестве селектора работает в Safari, но мне нужноцелевой элемент <option> в моем HTML.

Селектор $("option") также не работает в Safari, но я знаю, что скрипт jquery работает.Мой код работает в FF (3.6.16) и Opera (9.27), и я проверил мой HTML по валидатору W3 и мой javascript по JSlint.

Есть ли способ лучше написатьмой селектор jquery, или я могу создать составной селектор javascript для обхода ошибки Safari?

Ответы [ 3 ]

4 голосов
/ 23 июня 2011

Возможно, это связано с привязкой, которую вы собираетесь использовать.Вместо того, чтобы связывать событие click с самим <option>, вместо этого свяжите событие <select> change.

$('#js-nav-bar select').change(function(e){
  var tgt = $(this).val(); // .val() should find the selected option's value for you.
  document.location.href = tgt;
});

Посмотрите, работает ли это лучше.

2 голосов
/ 23 июня 2011

В вашем коде у вас есть #js-nav-bar как div:

Попробуйте это:

$('#js-nav-bar select').change(function(e){ //<-- on change of the select
  document.location.href = $(this).val() ;
});

Также я заметил в вашем коде, что у всех вас selects естьтот же класс (lim-width), так что используйте его!

$('.lim-width').change(function(){
   document.location.href = $(this).val();
})
0 голосов
/ 23 июня 2011

Вы должны использовать событие изменения, а не событие клика

$('.target').change(function() {
  alert('Handler for .change() called.');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...