2011-02-08 5 views
3

は、だからここに私が使用しているコードです:私は、ロードされたDIV(入力ボックス内からkeyupで)機能を起動するとき、今すぐjQueryのは:一度追加して停止(古いバージョンで働いていた)

$(function(){ 
    $('<div id="info" style="width:auto; height:auto;"/>').load('test.php?var='+d+' #se', function() { 
     $('#main').append(this); 
    }); 
}); 
} 

すべてのキーアップイベントに繰り返し追加されます。

私はjQuery 1.5を使用しています。以前のバージョン1.2.6では、divは最初から追加されず、問題なく動作しました(バグ?)。

divを何度も何度も追加しないようにするにはどうすればよいですか? ( "トリガー"を無効にすることは残念なことにオプションではありません)。私もappendToを試しました。これはかなり同じ問題です。

誰か助けてください!おかげでたくさんの

+0

「div#info」が既に存在するかどうかを確認するために、ロード・コールを条件検査でラップするだけです。 –

+0

メインのdivにデータを追加して、divが既にロードされているかどうかを確認し、そのイベントに何もしないでください。 – Maher4Ever

答えて

0

"#info" 動的に追加されると仮定すると、使用

$(function(){ 
    if($("#info").length==0) 
    { 
     $('<div id="info" style="width:auto; height:auto;"/>').load('test.php?var='+d+' #se', function() { 
     $('#main').append(this); 
     }); 
    } 
}); 
} 

。あなたからkeyupハンドラをバインドする.oneを使用することができますように

+1

これは決して完了しません。 'length == 0'を意味しますか? – eyelidlessness

2

サウンズ:

$('whatever').one('keyup', function() { 
    $('<div id="info" style="width:auto; height:auto;"/>').load('test.php?var='+d+' #se', function() { 
     $('#main').append(this); 
    }); 
}); 

.one機能は、それが一度実行した後、それ自体をアンバインドすることを除いてちょうど.bindのように動作します。

関連する問題