由于另一个按钮的单击处理程序的更改,一个按钮的单击处理程序停止工作

时间:2015-12-23 08:19:23

标签: jquery

更新:缺少),我在下面的评论中指明了该位置

我有一个页面,其中包含一个标识为#createButton的按钮,以及一些包含类.testButton的按钮。

我有#createButton的点击处理程序和.testButton的另一个点击处理程序。

出于某种原因,当我向#createButton的点击处理程序添加代码块时,.testButton的点击处理程序停止工作。我在下面指出了带有注释的特定代码块。

为什么一个按钮的点击处理程序因其他类型按钮的点击处理程序发生变化而停止工作?

$(document).on('click','#createButton',function(e){

    if(invalidated == 0 && filledEmbeds > 0){           

        //this code block is causing the problem
        $('.embedContainer').each(function(i, obj) {

        } //Update I was missing a closing paranthesis ) here.

        //some code

    }

    e.preventDefault();
});


$(document).on('click','.testButton',function(e){

        //some code

        e.preventDefault();
});

更新:在下方添加HTML:

<div id='embedContainer1' class='embedContainer'>
<textarea name='textareaName[]' id='textareaEmbed1' class='textareaEmbed'></textarea >
</div>
<button class='button testButton' id='testButton1'>Test code</button>


<div class='row item'>
<input type="submit" class="button" value="Create" id="createButton">
</div>

2 个答案:

答案 0 :(得分:1)

你错过了'每个'操作后的结束);。 我只是添加一个警报来确保这些处理程序被启动

$(document).on('click','#createButton',function(e){
        alert("A");
    if(invalidated == 0 && filledEmbeds > 0){           

        //this code block is causing the problem
        $('.embedContainer').each(function(i, obj) {

        });

        //some code

    }

    e.preventDefault();
});


$(document).on('click','.testButton',function(e){
                alert("B");
        //some code

        e.preventDefault();
});

添加fiddle

答案 1 :(得分:-1)

我会说你应该使用标准选择器并添加onClick回调。

$("[id='ImgSecode']").attr("src", "<Full Web Path of your Image>");

这样做的方式如下:

$('#id').on('click', function(){});

您绑定到$(document).on('click','.testButton',function(e){}); 元素。当您再次注册它时,它将简单地覆盖document元素上的第一个事件处理程序。