単語のリストから同じクラスのボタンを複数作成しました。同じクラスの複数のボタンが機能しない
var words = $(this).val().split(' ');
$.each(words, function(i, v) {
if ($.trim(v) !== '') {
html += "<button class='wordbtn'>"+ v +"</button>" + " "
}
});
$("p").html(html);
ボタンは私のビューに表示されますが、ボタンをクリックすると機能しません。
$(".wordbtn").click(function(){
console.log('clicked')
})
私のコードボタンは表示されますが、ソースコードを見るとボタンは表示されません。 テストするためにプレボタンを挿入すると機能します。あなたは、ボタンを作成している前
$(".wordbtn").click(function(){
console.log('clicked')
})
:
<p><button class='wordbtn'>Test</button><p>
これは、javascriptがソースコードがロードされた後にクライアント側で実行されるためです。イベントを '$(" p ")の直後に付ける.html(html);' maybe? – Isaac
JSコードは「ソースの表示」に決して影響しません。 – SLaks
.clickハンドラが追加された後、これらのボタンが動的に作成された場合、もちろんこれらのボタンにはクリックハンドラが追加されません.JavaScriptはスペースタイムの法則に従います。ボタンを作成した後にclickイベントを追加するか、クリックイベントハンドラを追加するときにイベント委譲手法を使用する必要があります。 –