JQuery добавить больше к функции клика - PullRequest
1 голос
/ 01 декабря 2009

У меня есть функция, связанная с объектом страницы в некоторых файлах Javascript, которые загружаются на каждой странице.

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

Объект с текущим определенным событием щелчка закрывает всплывающее окно div, которое появляется на экране. Когда по ней щелкают (только на этой определенной странице), мне нужно сбросить некоторые элементы на странице.

Итак, я могу достаточно легко отменить привязку события click и повторно привязать пользовательский, но это будет копировать большой код из исходного события close.

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

Есть ли способ, вроде как, добавить больше кода к созданному в данный момент событию?

спасибо за понимание!

Ответы [ 5 ]

1 голос
/ 01 декабря 2009

просто свяжите другой обработчик с добавленной функциональностью

0 голосов
/ 01 декабря 2009

События ставятся в очередь в jquery, поэтому вызываются все назначенные / привязанные события. Если по какой-либо конкретной причине вам необходимо привязать / отменить привязку только этого конкретного события, поставленного в очередь, выделите это событие.

$('button').click(function(){alert(1);});
$('button').click(function(){alert(2);});
//The 2 function gets called when the button is clicked 

$('button').unbind('click');//all handlers are removed.


//Namespaced event
$('button').click(function(){alert(1);});
$('button').bind('click.custom',function(){alert(2);});
//The 2 function gets called when the button is clicked 


$('button').unbind('click.custom');//only the click.custom is unbind
0 голосов
/ 01 декабря 2009

Вы можете использовать «связать», и тогда метод click может вызвать «триггер» для всех этих связанных событий.

0 голосов
/ 01 декабря 2009

Вы можете использовать делегирование событий. Google термин для некоторых учебных пособий

В основном работает, связывая событие с родительским неизменяемым элементом, а затем решая действия дочерних элементов, по которым щелкают. Таким образом, вы можете добавлять / удалять дочерние типы x без необходимости привязывать / перепривязывать к нему действия.

$("#parent_global_div").click( function (ev) {
   var el = $(ev.target);
   if( el === x){
       //do something
   }

});

0 голосов
/ 01 декабря 2009

Установите событие клика как функцию, например,

$(element).click(function(){//do stuff in here});

Вы можете добавить то, что хотите, в бит функции, вызывать больше функций или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...