повторная привязка функции .click () запускается в IE7 / 8 - PullRequest
2 голосов
/ 13 марта 2012

Вместо просто привязки функции к событию щелчка моя функция compare_remove () фактически получает с именем в IE7 / 8 (прекрасно работает в IE9, FF, Webkit).

HTML:

<div id="compare_listing_1234" class="compare_out_listing" title="Click to Add to Compare" onclick="compare_add('1234'); "></div>

СКРИПТ:

function compare_add(pid) {
  $('#compare_listing_'+pid).removeClass("compare_out_listing").addClass("compare_in_listing");
  $('#compare_listing_'+pid).attr("title","Click to Remove from Compare");
  $('#compare_listing_'+pid).prop("onclick", null);
  $('#compare_listing_'+pid).unbind('click').click(function(){ compare_remove(pid); });
}

Кто-нибудь знает почему?

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Internet Explorer 8 будет вызывать прослушиватели событий, добавленные к элементу во время отправки события. Firefox делает снимок прослушивателей событий при прохождении события каждым элементом, поэтому он не вызывает этот конкретный прослушиватель событий, но вы можете заставить его вызывать всплывающий прослушиватель событий, добавляемый прослушивателем событий захвата.

0 голосов
/ 13 марта 2012
function compare_add(pid) {
  window.event.cancelBubble = true;
  $('#compare_listing_'+pid).removeClass("compare_out_listing").addClass("compare_in_listing");
  $('#compare_listing_'+pid).attr("title","Click to Remove from Compare");
  $('#compare_listing_'+pid).prop("onclick", null);
  $('#compare_listing_'+pid).unbind('click').click(function(){ compare_remove(pid); });
}
...