2011-07-23 8 views
0

onclick属性を持つ要素が必要です。 jQueryを使用すると、動作しないようです。ここに私のコードです:jQuery <input> onclick属性の要素の問題

$("h1").append($("<input>", {type: "text", onclick: "alert();"})); 

コードん以下作品:

 
$('h1').append('<input type="text">').find('input').live('click', function() { 
    alert('bam'); 
}); 

EDIT:うん、私はデビッド・トーマスのコメントがあったことに気づいたようなものについてはどのように

<input type="text" onclick="alert();"></input> 
+2

[クロムで働く12/Ubuntuの11.04](http://jsfiddle.net/davidThomas/k5t4j /); 'alert()'が* something *](http://jsfiddle.net/davidThomas/k5t4j/1/)を警告している場合、Firefox 5で動作します。 –

+0

この種のデバッグでは、私はいつも 'alert(" click ")'を指定しました。なぜなら、それは文字列が必要だと仮定したからです:) – yitwail

+0

Hum。 Chromeの最新バージョンでは動作しません。 – Randomblue

答えて

2

は、あなたが本当にonclick属性を望んでいない、あなたはjQueryのclickイベントを使用します。 onclick属性を設定することは、ほとんどのブラウザで機能しますが、jQueryの正規化されたイベントやクロスブラウザのサポートを利用することはありません。

また、jQueryファクトリメソッドを正しく使用していない場合、2番目の引数はセレクタのコンテキスト、またはhtmlを作成する場合は作成する要素の所有者ドキュメントですあなたは本当にapiを読んでいくつかの時間を過ごす必要があります。

あなたはjQueryのチェーンほとんどのメソッドをすることができ、あなたが望むものをやっての "jQueryの道" であるので:

$('<input>').attr('type', 'text').click(function(){alert();}).appendTo('h1'); 
+0

非常に役に立ちました!乾杯。 – Randomblue

+0

私と同じ解決策 – rabudde

+0

@rabudde、ただし私は* why *を説明しましたが、要素を追加するために別のコンテキストを使用しました。 – zzzzBov

0

正しい、ただ実際に出力するためにアラートを変更すると正常に動作します。

+0

まだ私にとってはうまくいかない! – Randomblue

3

なぜ:

$("h1").append($("<input>").attr("type","text").click(function(){alert()})); 
+0

ああ、** that ** works! – Randomblue