Вопрос

Если вы знаете лучший способ сделать это, пожалуйста, дайте мне знать.Итак, у меня есть страница, которая будет содержать множество кнопок, диаграмм и таблиц.Я читал об остановке распространения событий, и это то, что я буду использовать.Я хочу включить справку по элементам 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
 }
});

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top