繁体   English   中英

奇怪的冒泡问题

[英]Weird Bubbling Issue

我不确定为什么会这样冒泡,但是确实如此。 想知道是否有人有任何想法吗?

$('#file_upload').live('submit',function(event){
        $('#file_upload').attr('action','io.cfm?action=updateitemfile&item_id='+$('.agenda-modal').attr('data-defaultitemid'));
        $('iframe').load(function(){
            $('.upload_output').empty();
            $livepreview.agenda({
                action:'get',
                id:$('.agenda-modal').attr('data-defaultitemid'),
                type:'item',
                callback:function(json){
                    for(x in json[0].files){
                        $('.upload_output').append('<li class="file-upload"><a target="blank" href="io.cfm?action=getitemfile&item_file_id='+json[0].files[x].item_file_id+'">'+json[0].files[x].file_name+'</a> <a style="color:red" href="#deletefile-'+json[0].files[x].item_file_id+'">[X]</a></li>');
                    }
                    console.log('callback');
                }
            });
            console.log('iframed');
        });
        console.log('go');
    });

因此,如果我上传文件,则会在控制台中得到以下内容:

go
iframe
callback

如果我连续第二次这样做:

go
iframed
iframed
callback
callback

和三遍:

go
iframed
iframed
iframed
callback
callback
callback

等等

我假设live()事件冒泡了,“ go ”也会冒泡,但事实并非如此。 我几乎在提交的任何地方都尝试了event.stropPropagation ,并将.die()连接到$('#file_upload').die().live(...如此。

有任何想法吗?

PS此live()调用仅在jQuery文档加载( $(function(){...}); )中

如果您使用one应该解决您的问题。

$('iframe').one("load", function() {

这是因为您每次都附加一个新的/ additional .load()处理程序,这意味着您刚刚添加的那个和所有以前的load事件处理程序都在运行。 如果您希望处理程序仅运行一次,请使用.one() ,而不要使用以下代码:

$('iframe').load(function(){

用这个:

$('iframe').one('load', function(){

或者,更浪费一些,但是每次都可以.unbind()

$('iframe').unbind('load').load(function(){

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM