为什么在我的脚本中多次触发click事件?

时间:2011-12-01 07:08:23

标签: javascript jquery html

我创建了一个包含点击事件的搜索按钮。当我第一次点击它时,它会按预期触发一次。当我第二次点击它时会触发两次,当我再次点击它时会触发多次......不知道为什么会发生这种情况?

这是点击事件的代码:

$("#search_top_form").delegate("#search_button","click",function(e) {   
            wrapperConsole('click search');
                alert("event trigger");                                    
            submitSearchForm();

        }); 

5 个答案:

答案 0 :(得分:1)

我猜你正在做这样的事情http://jsfiddle.net/3756r/ 意思是从submitSearchForm()调用此委托。

我在这里看到的另一个潜在问题是,如果您使用的是实际表单而按钮是提交按钮,则必须将事件传递给click函数并调用event.preventDefault()以便表单不会提交

答案 1 :(得分:1)

在委托之前

添加此内容 undelegate( “#search_button”, “点击”)。delagate ......

$("#search_top_form").undelegate("#search_button","click").delegate("#search_button","click",function(e) {   
            wrapperConsole('click search');
                alert("event trigger");                                    
            submitSearchForm();

        });

答案 2 :(得分:0)

我想你会在每次点击时重新加载这个脚本部分。这意味着委托适用于每个负载,并导致多次触发。

您可以尝试

  。

$( “#search_top_form”)undelegate(...)代表(..);

答案 3 :(得分:0)

我不是jquery的专家试试这个

$("#search_button").click(function(){ 
            wrapperConsole('click search');
                alert("event trigger");                                    
            submitSearchForm();
        }); 

答案 4 :(得分:0)

为什么不使用这样的东西,为什么我们使用委托?

$('#target').click(function() {
  alert('Handler for .click() called.');
});