如果你知道更好的方法,请告诉我。 我有一个页面,其中包含许多按钮,图表和表格。 我已经阅读了关于停止事件传播的内容,这就是我将要使用的内容。 我想在cerain元素上启用帮助。我有一个复选框,可以在启用帮助的div上更改光标。我想要做的是在正常点击行为之前添加帮助功能。
基本上就是这样。
<input type="button" value="Click me" onclick="alert ('hello')" />
我想要的是,如果单击该复选框,我添加一个css类(已经完成),然后在正常点击之前添加一个点击处理程序。单击元素后,将运行帮助功能,并且不会触发默认按钮单击处理程序。取消选中帮助复选框后,我想删除帮助功能。 我意识到我可以为每个元素强制进行此操作,并检查辅助函数以查看是否选中了复选框。但我更喜欢采用更通用的方式。
由于
约翰
答案 0 :(得分: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();
}
});
});
答案 1 :(得分: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
}
});
如果没有更多代码,很难更准确。