Событие щелчка jQuery, запускаемое программно - PullRequest
0 голосов
/ 08 сентября 2011

У меня есть ссылка с встроенным событием onclick:

<a href="#" onclick="somefunction();">click</a>

Я зарегистрировал дополнительную функцию для события onclick:

jQuery("#addMoreOptions").live('click',function(){
        console.log('clicked');
    });

Что хорошо работает, когда я нажимаю на ссылку в браузере, но не когда я симулирую программно:

jQuery("#addMoreOptions").click();

Программная версия запускает встроенное событие, но не "живое".

Когда к событию прикреплено несколько функций, в каком порядке оно используется?

Ответы [ 2 ]

1 голос
/ 08 сентября 2011

Я почти уверен, что это вызвано порядком происходящих событий.

Если вы посмотрите на этот живой пример , вы увидите, что все работает, как ожидалось. Это потому, что событие зарегистрировано, а затем вызвано. Код выглядит так:

jQuery(document).ready(function(){   

    jQuery("#addMoreOptions").live('click',function(){
        console.log('clicked');
    });

     $('#addMoreOptions').click();      

});

function somefunction()
{
 alert("clicked");   
}

Когда страница загружается, вы получаете alert и console.log.

Теперь с очень небольшим изменением положения $('#addMoreOptions').click(); перед регистрацией события, как в этом живом примере , вы получаете alert только из встроенной функции.

Для справки код

jQuery(document).ready(function(){   
     $('#addMoreOptions').click();  

    jQuery("#addMoreOptions").live('click',function(){
        console.log('clicked');
    });   

});

function somefunction()
{
 alert("clicked");   
}
0 голосов
/ 08 сентября 2011

Альтернативный способ вызвать событие щелчка - использовать функцию .trigger ():

jQuery('#addMoreOptions').trigger('click');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...