4

如果您知道更好的方法来做到这一点,请告诉我。对,我有一个包含大量按钮、图表和表格的页面。我已阅读有关停止事件传播的信息,这就是我将要使用的内容。我想启用对某些元素的帮助。我有一个复选框,可以更改启用帮助的 div 上的光标。我想要做的是在正常点击行为之前添加一个帮助功能。

基本上是这样的。

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

我想要的是,如果单击复选框,我会添加一个 css 类(已经完成),然后在正常单击之前添加一个单击处理程序。单击该元素时,将运行帮助函数,并且不会触发默认的按钮单击处理程序。当未选中帮助复选框时,我想删除帮助功能。我意识到我可以对每个元素进行硬编码,并检查辅助函数以查看复选框是否被选中。但我更喜欢更通用的方式。

谢谢

约翰

4

2 回答 2

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

                }
            });
        });
于 2009-08-12T09:07:58.530 回答
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
 }
});

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

于 2009-08-12T08:51:55.097 回答