Jquery前置单击处理程序

如果您知道更好的方法,请告诉我。 我有一个页面,其中包含许多按钮,图表和表格。 我已经阅读了关于停止事件传播的内容,这就是我将要使用的内容。 我想在cerain元素上启用帮助。 我有一个复选框,可以在启用帮助的div上更改光标。 我想要做的是在正常点击行为之前添加帮助function。

基本上就是这样。

 

我想要的是,如果单击该复选框,我添加一个css类(已经完成)然后我在正常点击之前添加一个点击处理程序。 单击该元素时,将运行helpfunction并且不会触发默认按钮单击处理程序。 取消选中帮助复选框后,我想删除帮助function。 我意识到我可以为每个元素强制执行此操作并检查辅助函数以查看是否选中了复选框。 但我更喜欢采用更通用的方式。

谢谢

约翰

  $(":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(); } }); }); 

我认为你想在这种情况下使用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 } }); 

没有更多的代码,很难更准确。