2011-06-23 13 views
1

私は動的にこの方法は、私は今、このクリックハンドラは、要素を削除した後に残っているし、そのアクションを実行する複数回

$('#close').live('click',function(){ 
$(this).parent().remove(); 
}); 

$('#proceed').live('click',function(){ 
//ajax-call 
}); 

のようなハンドラを持っているこれらのボタンにボタンで

function showPopup(){ 
var comp = '<div id="alert"><input type="button" id="proceed"><input type="button" id="close"></div>'; 

$('#body').append(comp); 

} 

をカスタムコンポーネントを追加してい問題は、関数をn回呼び出して終了し、終了するときに、今度はn個のajax呼び出しを実行するときです。 これに対する解決策はありますか? ありがとうございます

+0

showPopup()が呼び出されるたびにハンドラコードスニペットを実行していますか? – Yardboy

+0

実際のコードではうまくいかないと思いますが、あなたの 'parent'呼び出しに'() 'がありません。 –

+0

@Yardboy:showPopupでハンドラが実行されません – Dhiraj

答えて

2

無効なマークアップである同じidの複数の要素を追加しています。イベントを正しい要素に委譲する場合、jQueryに問題が発生します。 IDを照会するときにjQueryは正確に一つの要素にマッチする - またDoes duplicate id's screw up jquery selectors?

参照、this demoはChromeで私のために働いているようだ14

+0

しかし、閉じるときにボタンを削除しています – Dhiraj

0

あなたがlive電話を持っていないため、確実に伝えるのは難しいですコンテキストではなく、私はliveへの呼び出しが複数回呼び出されるいくつかのコード内にあると仮定します。もしそうなら、これが問題です。 liveは、各要素に対して1回のみ呼び出す必要があります。 liveは、セレクタに一致して作成されたすべての項目に自動的に適用されます。複数回呼び出された場合は、毎回別のハンドラをアタッチします。

関連する問題