3

次のようなコードがあります。

jQuery(this).parent().parent().parent().parent().next(".results-table").css("display", "block");

基本的に、テーブル内のリンクをクリックすると、次の結果テーブルが表示されます。問題は、このリンクが td 内にあり、これはもちろんテーブル内にある tr 内にあるため、親セレクターが繰り返されることです。

私が見逃しているこれを行うより良い方法はありますか? 残念ながら、jQuery の経験はあまりありません。

4

5 に答える 5

6

http://api.jquery.com/closest/を使用できますjQuery(this).closest("table")

于 2012-09-20T12:32:00.780 に答える
4
jQuery(this).parents("table").next(".results-table").css("display", "block");

また

jQuery(this).closest("table").next(".results-table").css("display", "block");
于 2012-09-20T12:32:16.693 に答える
2
jQuery(this).closest('table').css("display", "block");

あるいは

jQuery(this).closest('.results_table').css("display", "block");

希望する結果とHTML要素によって異なります。

于 2012-09-20T12:32:29.017 に答える
0
$(this).parents(":eq(3)")

これは役立つかもしれません

于 2012-09-20T12:38:22.310 に答える
0

または、.click() の代わりに .on() などのイベント委譲を利用することもできます。次に、単純に e.delegateTarget を使用できます。

例えば、

$(parent).on("click", link, function(e) {
    jQuery(e.delegateTarget).next(".results-table").css("display", "block");
});
于 2012-09-20T12:51:37.847 に答える