我正在制作一个编辑按钮,它会弹出一个带有表单的模式框来编辑它。 jQuery 然后将此表单发送到我的服务器,我得到一个 JSON 响应。但是,由于我的冒泡问题,例如,如果我单击所有编辑按钮,然后单击最后一个并更改一个字段,它会在所有这些按钮上执行此操作。

$('.edit').click(function(event){
 //more code...
    modal_submit(the_id);
    event.stopPropagation();
});

然后提交事件:
function modal_submit(the_id){
$('#modal form').submit(function(){
    //This will alert every time I have EVER clicked on an edit button
    alert(the_id);
    return false;
});

}

最后,所有这些都在 getScript 中:
$.getScript('js/edit.js',function(){
create_edit_btn();

});

我只用过这个 1 次,它工作,但我也必须做 this.event.stopPropagation,但如果我现在做“这个”它说 this.event 是未定义的,但就像我说的,这个确切的代码之前为我做过的另一个脚本工作过。

有没有人有任何想法? :\

编辑:
the html is:
<li>
  <input id="item1" type="checkbox" value="webhosting|15" title="Web Hosting">
    <p>Hosting for your web site</p>
</li>

最佳答案

一个事件可以有多个事件监听器。每次使用 $(element).submit(whateverFunction) 时,都会向提交事件添加另一个whateverFunction。如果您只希望最后一个监听器成为在调用事件时执行的操作,请尝试执行以下操作:

function modal_submit(the_id){

$('#modal form').unbind(); // this will remove all other event listeners from this element

$('#modal form').submit(function(){
        //This will alert every time I have EVER clicked on an edit button
        alert(the_id);
        return false;
});

关于javascript - jQuery/JavaScript 冒泡和 stopPropagation 不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1180925/

10-12 06:19