Jquery 前置点击处理程序
Posted
技术标签:
【中文标题】Jquery 前置点击处理程序【英文标题】:Jquery prepend click handler 【发布时间】:2009-08-12 08:37:20 【问题描述】:如果您知道更好的方法,请告诉我。 对,我有一个包含大量按钮、图表和表格的页面。 我已阅读有关停止事件传播的信息,这就是我将要使用的内容。 我想启用对某些元素的帮助。我有一个复选框,可以更改启用帮助的 div 上的光标。我想要做的是在正常点击行为之前添加一个帮助功能。
基本上是这样的。
<input type="button" value="Click me" onclick="alert ('hello')" />
我想要的是,如果单击复选框,我会添加一个 css 类(已经完成),然后在正常单击之前添加一个单击处理程序。单击元素时,将运行帮助函数,并且不会触发默认的按钮单击处理程序。当未选中帮助复选框时,我想删除帮助功能。 我意识到我可以对每个元素进行硬编码,并检查辅助函数以查看复选框是否被选中。但我更喜欢更通用的方式。
谢谢
约翰
【问题讨论】:
【参考方案1】: $(":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();
);
);
【讨论】:
【参考方案2】:我认为您想在这种情况下使用绑定/取消绑定 - 请参阅 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
);
没有更多代码,很难更准确。
【讨论】:
以上是关于Jquery 前置点击处理程序的主要内容,如果未能解决你的问题,请参考以下文章
[ jquery 文档处理 prependTo(content) ] 此方法用于把所有匹配的元素前置到另一个指定的元素元素集合中
[ jquery 文档处理 prepend(content|fn) ] 此方法用于向每个匹配的元素内部前置内容,这是向所有匹配元素内部的开始处插入内容的最佳方式