Вопрос по click, jquery, prepend, handler – Jquery prepend click обработчик

4

Если вы знаете лучший способ сделать это, пожалуйста, дайте мне знать. Да, у меня есть страница, которая будет содержать множество кнопок, диаграмм и таблиц. Я читал о прекращении распространения событий и чточто ябуду использовать. Я хочу включить помощь по элементам ландшафта. У меня есть флажок, который меняет курсор на div с поддержкой справки. Что я хочу сделать, это добавить функцию справки перед обычным поведением щелчка.

В основном этовот так.


я хочу, чтобы, если флажок был установлен, я добавляю класс css (уже сделано), а затем добавляю обработчик щелчков перед обычным щелчком. При щелчке по элементу запускается справочная функция, а обработчик щелчка по умолчанию не запускается. Когда флажок справки снят, я хочу удалить функцию справки. Я понимаю, что мог бы жестко указать это для каждого элемента и проверить в вспомогательной функции, чтобы проверить, установлен ли флажок. Но я'Я предпочел бы более общий способ сделать это.

Спасибо

Джон

Ваш Ответ

2   ответа
8
        $(":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();

                }
            });
        });
отлично, именно то, что мне нужно, спасибо John
спасибо за упрощение моего существующего кода. IEnumerator
0

что вы хотите поиграть с bind / unbind в этом случае - смотрите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
 }
});

Без большего кода этоТрудно быть более точным.

Похожие вопросы