2017-08-29 3 views
1

私は、(mysqlに接続された)テーブル内のすべての従業員をリストするphp従業員ディレクトリのWebサイトを持っています。別の部門でダイナミックに作成された要素にjqueryイベントを添付する(jquery load php file)

$('.emptab').click(function(event) { 
    var status = $(this).attr('id'); 
    $("#empview").load("employee.php", {'data': datastring, 'current': status}); 
}); 

私はもともと上記のコードを持っていましたが、動的要素にイベントを添付できるようにするために必要なので、私は次のコードに変更:私は読んで、私はそのようにやった

$('tbody').on('click', 'tr.emptab', function() { 
    var status = $(this).attr('id'); 
    $("#employeedetails").load("employee.php", {'data': datastring, 'current': status}); 
}); 

別の質問(In jQuery, how to attach events to dynamic html elements?)を使用して、その形式を使用してイベントを動的要素に添付することができます。明確にするために、このコードは最初のページで動作し続けますが、検索フィルタが使用された後は失敗します。

私の動的要素は、作成したfilter.phpドキュメントに基づいて従業員のリストを変更する検索テキストボックスに基づいて従業員のリストを変更します。これらの要素は、そのPHPファイルから作成されたとき

$('#search').on('input propertychange paste', function() { 
    var string = $('#search').val(); 
    $("#employeelist").load("filter.php", {'data': datastring, 'search': string}); 
}); 

はしかし、私は私が間違ってやっているかわからないんだけど、私のjqueryの経由の要素にアクセスすることができません。私が成功していない関数でjqueryを使用する答えがどこにあるのかを知った約4つの他の質問がありました。

お時間をいただきありがとうございます。

答えて

0

あなたはちょっとこの

$(document).on('click', '.emptab', function() { 
    var status = $(this).attr('id'); 
    $("#employeedetails").load("employee.php", {'data': datastring, 'current': status}); 
}); 
+0

のために働いたおかげで、次のコードを使用することができます。ちょうど不思議なことに、なぜそれは文書でなければならず、身体やテーブルなどのようなものではないのですか? – user163362

+0

それは子孫が現在存在しているか将来追加されるかにかかわらず、セレクタに一致するすべての子孫に対して起動する、単一のイベントリスナを親要素に結び付けることを可能にするイベント委任です。 あなたのtbody要素が動的に作成されている可能性があります。なぜそれが機能しているのですか? –

+0

@ user163362これは、未来の要素の既存の祖先要素が行う必要はありませんでした。 – CBroe

関連する問題