Выберите событие триггера не работает в jQuery - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть следующая функция:

jQuery("el").click(function() {

    var index = jQuery(this).index(),
    select = jQuery('select.SelectClass option').get(index + 1),
    $select = jQuery(select);
    $select.attr('selected', 'selected');
    jQuery(jQuery('select.selectClass').get(0)).trigger('change');   

});      

Я пытаюсь вызвать событие изменения для выбора, и кажется, что это не работает.Следует также отметить, что на этой странице также используется код прототипа, который влияет на эти варианты выбора.На странице есть другие элементы, на которые влияет событие изменения на странице.

Есть ли проблемы с этим кодом?Или у кого-нибудь есть рекомендация вызвать это событие?

Ответы [ 3 ]

1 голос
/ 07 апреля 2011

это не представляет никаких проблем, но статус выполнения зависит также от HTML.Мабы, вы также должны опубликовать образец html.
Что касается js, то его можно улучшить: используйте метод $(selector).eq(i) вместо $($(selector).get(i)).
, это функция, которая должна вызывать событие изменения впервый элемент 'select.selectClass':

function triggerChange() {
    var index = jQuery(this).index(),
    $select = jQuery('select.SelectClass option').eq(index + 1);  
    $select.attr('selected', 'selected');
    jQuery('select.selectClass:first').trigger('change');   
}

теперь это зависит от вас, когда вы вызываете его. Вы можете привязать его к срабатыванию при нажатии на элемент: jQuery(element).click(triggerChange);.

0 голосов
/ 07 апреля 2011

Этот jQuery("el").click(function() { не будет вызывать никаких событий. Если у вас есть элемент, установленный в переменную с именем el, вам нужно использовать jQuery(el).click(function(){. Если вы намереваетесь настроить обработчик событий, когда изменяется опция выбора, используйте: jQuery("#yourSelectsIDHere").change(function(){ /* do your event stuff here */});. Для запуска события изменения используйте jQuery("#yourSelectsIDHere").trigger("change");

0 голосов
/ 07 апреля 2011

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

$('#foo').change(fred);
$('#bar').change(fred);

function fred(e) {
//do stuff
}

...

function someotherstuff() {
    fred(); //fires same behavior as the change event.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...