2016-10-26 7 views
0

DOM要素にバインドされたJqueryハンドラがあります。JQuery:イベントハンドラをリフレッシュする方法

$('.details-control').click(function() { 
     var tr = $(this).closest('tr.parentRow'); 
     var row = table.row(tr); 
     var nestedTable = tr.children('td.nested').children('table.nested').clone(true); 


     if (row.child.isShown()) { 
      // This row is already open - close it 
      row.child.hide(); 
      tr.removeClass('shown'); 
     } 
     else { 
      // Open this row 
      row.child(nestedTable).show(); 
      tr.addClass('shown'); 
     } 
    }); 

上記要素は、ページ分割テーブルであるため、テーブルは、ページ変更で(「.details対照」)の要素をページ分割取得し、これらのイベントが取り付けられていないとき。

これらの新しい$( 'details-control')要素にイベントを添付したいと思います。

私は考えることができる唯一の方法は、以下のようなコードを再度書き換えることである...

$('.pagination').click(function() { 
    //copy-paste $('.details-control').click(function() {.... 

    }); 

しかし、私はより良い方法がなければならないと思います..しかし、私は「ので、何も私の検索しても来ませんこの検索条件に該当する検索用語がわからない

詳細コントロールイベントの名前を付けて呼び出す方法はありますか、コピー貼り付けやハンドラの再取り付けや更新の必要はありませんか?

答えて

2

あなたがbubble-コンテナとフィルタリングイベントにハンドラを取り付ける工程があるイベントの委任を探しています特定の基準(この場合はセレクター)にしたがってアップアップします。 .paginationと仮定すると.details-controlの親であり、その親が交換されることは決してありません:

$('.pagination').on('click', '.details-control', yourHandler); 
+0

'.pagination'は' .details-control'の親ではありません。 'details-control'は私のテーブルにあり、' .pagination'はありません。 – Phil

+1

@Philさて、置き換えられることのない '.details-control'の最も近い親でイベントデリゲーションを使用してください。 – plalx

+0

私はそれについて今読んでいます、私は親としてテーブルを使用できると思います。ありがとう! – Phil

0

ハンドラで使用します。

$(document).ready(function() { 
    $(selector).on('click', function() { 
     // logic 
    }) 
    }) 

あなたがオフにこれらをオンとオフを動的に(上に)とすることができます()

関連する問題