我正在制作一个编辑按钮,它会弹出一个带有表单的模式框来编辑它。 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/