0

これが泡立っている理由はわかりませんが、そうです。誰かに何かアイデアがあるかどうか疑問に思っていますか?

$('#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

2回連続で行う場合:

go
iframed
iframed
callback
callback

そして3回:

go
iframed
iframed
iframed
callback
callback
callback

live()イベントがバブリングしていれば" go" もバブリングすると思いましたが、そうではありません。event.stropPropagation送信内のほぼすべての場所で試してみて、そのように.die()接続しました。$('#file_upload').die().live(...

何か案は?

PS このlive()呼び出しは、jQuery doc ロード ( $(function(){...});)のすぐ内側にあります。

4

2 に答える 2

2

あなたの問題を使用する場合oneは解決する必要があります。

$('iframe').one("load", function() {
于 2010-08-02T22:08:18.537 に答える
2

これは、毎回新しい/追加 のハンドラーをアタッチしているためです。これは、追加したばかりのハンドラーと以前のすべてのイベント ハンドラーがすべて実行されていることを意味します。ハンドラーを 1 回だけ実行する場合は、次の代わりに, を使用します。.load()load.one()

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

これを使って:

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

または、もう少し無駄ですが.unbind()、毎回次のことができます。

$('iframe').unbind('load').load(function(){
于 2010-08-02T22:08:49.937 に答える