2016-04-27 14 views
2

これは私の問題です。テーブルに新しい行を追加します。この行には、クリック可能でイベントを発生させるボタンがあります。私は、ソリューションのトンを見つけましたが、それらのそれぞれは、この方法が含まれていますテーブル内に新しい行を追加した後にJqueryを追加するイベントなし

.on('click', 'button', function(){  
//do something  
}); 

では(のみクリック可能性を活性化させる)この場所でその関数呼び出しのないソリューションを必要としています。 Reasenは、テーブル行を追加、編集、削除するための3つの異なるAjaxパーツがあります。私はこれをcontentEditableテーブルで制御します。したがって、各行にはこの行を編集および削除するボタンが表示されます。新しい行を挿入すると、新しい行にこれらのボタンが表示されます。私のボタンは、上記の例のように実行させるために、私はこのような構造を得る:このところで

// AJAX for edit row 
do something 

// AJAX for delete row 
do something 

// AJAX for add row 
$('#editTable > tbody:last').append('<tr><td><button>DELETE</button></tr><td>'); 

$('#table').on('click', 'button', function() { 
    // AJAX for delete row 
    do something 
}); 

を、私は問題を見て、私は二回、完全なAJAX-削除部分を記述する必要があります。

理論的には簡単ですが、削除ボタンのクリックイベントをアクティブにしてクリックすると、AJAXの削除部分が呼び出されます。

しかし、私はこのような簡単な解決策を見つけました。

は...君たちが私のための1つを持っている

おかげで多くのことを願っています!

+0

の可能性のある重複した[動的に作成された要素を上の結合イベント?](http://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-要素) – ventaquil

+0

私はこの方法を知っていますが、私はコードを2回書くように助言する解決策を探しています。 – grizzly

答えて

0

あなたはこのコードを使用する必要があり、動的に追加されたコンテンツのためのクリックイベントを追加したい場合は、次のクラスでシンプルtd要素について

$(document).on('click', 'yourcontent', function (event) { 
    // ... 
}); 

を:追加したボタンにグローバルクラスなどを付け

$(document).on('click', 'td.myclass', function (event) { 
    // ... 
}); 
+0

私はこの方法を知っていますが、コードを2度書くように助言する解決策を探しています。 – grizzly

1

deleteイベントデリゲートon()を使用してすべてのボタンに対して1つのイベントを追加するには、次の例を参照してください。

JS:

$('#editTable > tbody:last').append('<tr><td><button class="delete">DELETE</button></tr><td>'); 

$('body').on('click', '.delete', function (event) { 
    //Your code here 
}); 

この情報がお役に立てば幸いです。


$('body').on('click', '#add', function (event) { 
 
    $('#editTable').append('<tr><td>test<td><td><button class="delete">DELETE</button></tr><td>'); 
 
}); 
 

 
$('body').on('click', '.delete', function (event) { 
 
    alert("AJAX for delete row"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="add">Add row</button> 
 
<table id="editTable"> 
 
    <thead> 
 
     <th>TEST</th> 
 
     <th>Action</th> 
 
    </thead> 
 
</table>

+0

ありがとうございました...問題は、右のボタンを見つける/呼び出すことではありません。私はそれを見つけるが、それは火を失うことはない。なぜなら、彼が事件を起こさせる唯一の解決策は、.on(function {})の方法だからだ。しかし、この方法はindenticalコードを二度書くことを含む。 – grizzly

+0

なぜindentical二回目のコード?イベントを1回作成するだけで、追加されたすべてのボタンにアタッチされ、 'delete'クラスが作成されます。 –

+0

それは正しい方法で私のように聞こえる...今のところ、私はこの方法で削除イベントを呼び出します: $( 'button [name = "deleteButton"]')click(function(){...}); これをどのように別々に書いて、これらのボタンで呼び出すことができますか? – grizzly

関連する問題