如果你知道一个更好的方式来做到这一点,那么请让我知道。 右键我有一个网页,其中包含大量的按钮,图表和表格。 我已阅读关于停止事件传播史,这就是我将使用。 我想启用cerain元素的帮助。我有一个复选框,其改变的帮助使div的光标。我想要做的就是之前正常的点击行为在前面加上一个帮助功能。

基本上是这样的。

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

我想是,如果被点击复选框我添加了一个CSS类(已完成),然后我的正常的单击之前添加点击处理程序。当点击该元素则helpfunction运行,默认按钮单击处理程序不激发。当帮助复选框取消选中我想删除的帮助功能。 我意识到,我可以hardocde这对于每一个元素,并有在helperfunction一检查,看是否复选框被选中。但我宁愿做一个更通用的方法。

由于

约翰

有帮助吗?

解决方案

        $(":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 /活动/ jQuery.Event

您会使用的东西的喜欢:

$("a").bind("click", function(event){
 if ($("#helpcheckbox").attr('checked')
 {
  event.preventDefault();
  // do something
 }
});

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top