Почему какое-то время событие jquery click не срабатывает? - PullRequest
0 голосов
/ 11 мая 2011

Моя страница разделена на две части vertically. Left part похож на раздел меню. Нажав на любое меню приносит правильные данные, связанные с этим меню, в right part страницы. я делая это, используя ajax call, и только div on the right part обновляется. Я использую событие jquery click для этого .. говорят:

$("#left_part").click(function() {  // ajax call here });

Теперь у меня есть еще jquery action на right part. (скажем Показать скрыть некоторые div, которые также работают на click event.) Но когда new div reloads на правой части те click event on the right part не работает. Но когда я bind the click event это работает.

говорят:

$("#some_right_part").click(function() {/ some hide show here )}; Not working
$("#some_right_part").bind('click', function(event){ // some hide show here )}; works fine

Важно: Когда я нахожусь на fresh page (нет вызова ajax, чтобы принести правую часть) $("#some_right_part").click(function() {/ some hide show here )}; works fine.

Но я знаю: $().click(function) звонит $().bind('click',function)

Итак, в чем причина этого? Или каков идеальный способ решить такую ​​проблему

Спасибо

1 Ответ

3 голосов
/ 11 мая 2011

Когда вы назначаете событие click через $().click при загрузке страницы, событие click связывается со всеми соответствующими элементами. Однако, когда вы делаете вызов ajax и получаете новую разметку - новые элементы не привязаны к событию click, потому что они не существовали, когда вы впервые вызвали $().click.

Существует способ получить событие клика, которое будет привязано ко всем элементам и всем будущим элементам, которые могут быть созданы. Вы должны использовать метод live следующим образом:

$('#elements').live('click', function() {
   // do logic
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...