2012-01-03 6 views

答えて

4

ボタンに「onclick」を追加しても、それは解析されずにブラウザで処理され、イベントハンドラは決して作成されません。

あなたの最良のオプションは、「onclickの」行を、ボタン自体の外にイベントハンドラを作成、削除され、そしてこの文書の準備ができてブロック:イベントハンドラがに自分自身を添付して

$("#d1").on('click', 'input:button', function() { 
    alert($("#dataSources").val()); 
}); 

が、これは動作します#d1を作成し、クリックしたボタンにイベント自体を委任します。ボタンを作成または破棄しても、ハンドラには影響しません。

+0

バージョン1.3.2のjQueryでこれを達成するにはどうすればいいですか?私たちの開発版は、jQuery 1.7.1 ASAP !!にアップグレードするだけで1.3.2 – Saravanan

+0

になりました。 jquery 1.4.2は$ .delegateを導入しています。これは$ .onに相当し、多くのバグを解決しますが、1.3.2よりもはるかに高速です。 jquery 1.6.2も非常に安定しており、私はそれをprodで使用します。 (私はまだ生産のために1.7を検証する必要があり、何らかの理由で、私はx.x.2バージョン... X'Dが好きです)。しかし、本当にアップグレードできない場合、$ .liveはまともなオプションです。$ .bindを使用してコールバック関数に "event"を渡し、 'if(event.target == 'buttonId '){... 'ブロック。 – roselan

+0

1.3.2のために[このフィドル](http://jsfiddle.net/YNM68/10/)を確認してください – roselan

0

代わりappendメソッド内でクリックイベントを定義するには、jsFiddleリンクで提供されるあなたはjQueryの1.7.1を使用していると仮定しdocument.readyon方法を使用してイベントを結合することができます。

例えば:

$("#deleteDataSource").on("click", function(){ 
    //do your work here 
}); 

注:私はあなたにもあなたの質問にあなたのコードを投稿するべきだと思います。

+0

DOMの準備ができたらdeleteDataSourceを持っていないので、このコードを使用することはできません。 – Saravanan

+0

同意すると、@ roselanの答えは正しいものです。 –

関連する問題