Jquery добавляет обработчик кликов
Вопрос
Если вы знаете лучший способ сделать это, пожалуйста, дайте мне знать.Итак, у меня есть страница, которая будет содержать множество кнопок, диаграмм и таблиц.Я читал об остановке распространения событий, и это то, что я буду использовать.Я хочу включить справку по элементам Cerain.У меня есть флажок, который меняет курсор на div с поддержкой справки.Я хочу добавить функцию справки перед обычным поведением щелчка.
В основном это так.
<input type="button" value="Click me" onclick="alert ('hello')" />
я хочу, чтобы при установке флажка я добавлял класс CSS (уже готово), а затем добавлял обработчик щелчка перед обычным щелчком.При нажатии на элемент запускается функция справки, а обработчик нажатия кнопки по умолчанию не запускается.Если флажок справки снят, я хочу удалить функцию справки.Я понимаю, что мог бы жестко закодировать это для каждого элемента и проверить вспомогательную функцию, чтобы убедиться, что флажок установлен.Но я бы предпочел более общий способ сделать это.
Спасибо
Джон
Решение
$(":button").each(function() {
// your button
var btn = $(this);
// original click handler
var clickhandler = btn.attr("onclick");
btn.attr("onclick", "return false;");
// new click handler
btn.click(function() {
if ($("#chkbox").attr("checked") == true) {
// TODO: show your help
// TODO: catch event
}
else {
clickhandler();
}
});
});
Другие советы
Я думаю, в этом случае вы хотите поиграть с привязкой/отвязкой - см. http://docs.jquery.com/Events/unbind#typefn
установив этот флажок, вы можете привязать новые события нажатия к кнопкам и отменить их позже.
Вероятно, вам также придется работать с Event.preventDefault (http://docs.jquery.com/Events/jQuery.Event), чтобы подавить поведение щелчка по умолчанию, если вы этого не хотите.
Вы бы использовали что-то вроде:
$("a").bind("click", function(event){
if ($("#helpcheckbox").attr('checked')
{
event.preventDefault();
// do something
}
});
Без большего количества кода трудно быть более точным.