2016-07-06 4 views
0

<tr>を動的に追加するスクリプトがありますが、その中に含まれている要素は、DOMにまだロードされていないため、jQueryによって認識されないようです。DOM内にない要素にバインドする

私は.on機能を使用しようとしましたが、機能しません。

アイデアはありますか?

$(document).ready(function(){ 
    $("#add_item").click(function(e){ 
    e.preventDefault(); 
    var nbeTr = $(".tablerow").length; 
    if (nbeTr < 10){ 
     $(".tablerow:last").after("<tr class='filleul'><td></td><td></td><td></td><td><button class='newtr'>X</button></td></tr>"); 
    } 
    }); 
    $(document).on("click", ".newtr", function(event) { 
    event.preventDefault(); 
    alert("Yo"); 
    }); 
}); 
+2

HTMLを共有してください。 –

+0

Fiddle example https://jsfiddle.net/z7wk5j1b/ – DaniP

+0

私が作ったフィドルに基づいて...あなたがJqueryに間違ったバージョンを使用していて、以前のフィドルでv1.6を使用していないために動作しないと思います。あなたのコードは動作します。https://jsfiddle.net/z7wk5j1b/1/ – DaniP

答えて

0

ボタン要素の作成時にイベントリスナーを登録する必要があります。今では、未定義の要素にクリックイベントを登録しようとしています。

// create button 
$ele = $("<button class='newtr'>X</button>"); 
// bind event listener to button 
$ele.on("click", function() { alert("hello"); }); 
// insert $ele into DOM 
$target.append($ele); 
0

ちょっとあなたのコードが動作している、私は問題がどこか他の場所だと思う。

は、この実施例を参照してください:

$(document).ready(function() { 
 
    $("#add_item").click(function(e) { 
 
    e.preventDefault(); 
 
    var nbeTr = $(".tablerow").length; 
 
    if (nbeTr < 10) { 
 
     $(".tablerow:last").after("<tr class='tablerow filleul'><td>1</td><td>2</td><td>3</td><td><button class='newtr'>X</button></td></tr>"); 
 
    } 
 
    }); 
 
    $(document).on("click", ".newtr", function(event) { 
 
    event.preventDefault(); 
 
    alert("Yo"); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<button id='add_item'>Add item</button> 
 
<table> 
 
    <tr class='tablerow'> 
 
    <td>c1</td> 
 
    <td>c2</td> 
 
    <td>c3</td> 
 
    <td> 
 
     <button class='newtr'>X</button> 
 
    </td> 
 
    </tr> 
 
    <table>

+0

投票の理由がありますか? –

+0

downvoteはしませんでしたが、この回答は新しい質問を提供しません。なぜこのコードはOPのために働かないのですか...あなたは、実際のコードが動作することを指摘しているように、コメントの明確化を求めることができます。 – DaniP

+0

はい、jQueryが使用していたバージョンが悪いですし、リフレッシュが正しくありませんでした。 – Buck

0

[OK]を、問題が使用していたのjQueryの悪いバージョンでした。

私はちょうど最後のjQueryバージョンのCDNを使用し、キャッシュをリフレッシュして動作しています。

関連する問題