ここで見つけたjQueryスクリプトを使用して、テーブルの行をハイライト表示/非表示にしています。スクリプトは次のとおりです。動的に追加された要素に対してjQueryイベントが正しく機能しない
$(".clickable-row").click(function(){
if($(this).hasClass('row-highlight'))
$(this).removeClass('row-highlight');
else
$(this).addClass('row-highlight').siblings().removeClass('row-highlight');
}
私のテーブルのすべての行は、クラスのクリック可能な行を持っています。
これは、ユーザーがボタンをクリックしたときに動的に行が追加されたテーブルを導入するまで、うまくいきました。その表では、動的に追加された行は強調表示されません。
私は任意の手段によってjQueryの専門家ではないが、いくつかの研究の後、私はイベントの委任を使用することにより、動的に追加された行がクリック可能であるべきことがわかったので、私はこれに私のスクリプトを変更:
$(".clickable-row").on("click", "td", function() {
if ($(this).parent().hasClass('row-highlight')) {
$(this).parent().removeClass('row-highlight');
} else {
$(this).parent().siblings().removeClass('row-highlight');
$(this).parent().addClass('row-highlight');
}
});
これは静的テーブルでは問題なく動作しますが、動的に追加された行では機能しません。
私は動的に追加された行のHTMLをチェックしていると、彼らは次のようになります。
<tr class="clickable-row">
<td>some text here</td>
<td class="hidden"><input type="text" name ="ID2" value="2"></td>
HTML構造が同じテーブル内の既存の行と全く同じです。行はタグ内に含まれます。
どこが間違っていますか?
編集:何らかの理由で、コードブロックが正しく表示されません。 htmlの例の最後に "/ tr"タグがありますが、質問には表示されません。
.clickable行を実行する(静的親)テーブルにイベントをアタッチしようとすると、あまりにも、動的要素であるので。 – sinisake