Только что изменил ответ fehay, чтобы он не полагался на то, что jQuery не присоединяет дубликаты обработчиков событий во время toggle()
$(".reply").live('click', function () {
var toggled = $(this).data('toggled');
$(this).data('toggled', !toggled);
if (!toggled) {
x1();
}
else {
x2();
}
});
Кроме того, имейте в виду, что селекторы для live
должны быть какконкретный, насколько это возможно, из-за способа делегирования событий.Каждый раз, когда что-то щелкает по документу, jQuery должен подниматься вверх по дереву, проверяя, соответствует ли элемент селектору. По той же причине .delegate()
гораздо более производительный, потому что вы можете ограничить область захвата.