2009-08-12 4 views
4

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

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

<input type="button" value="Click me" onclick="alert ('hello')" /> 

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

Благодаря

Джон

ответ

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(); 

       } 
      }); 
     }); 
+0

отлично, что мне нужно спасибо – John

+0

спасибо за упрощение существующего кода. – IEnumerator

0

Я думаю, что вы хотите играть с затруднительным/отвязать в данном случае - см 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 
} 
}); 

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

 Смежные вопросы

  • Нет связанных вопросов^_^