3

我有一些看起来像这样的代码:

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

基本上,点击表格内的链接后,将显示以下结果表格,问题是该链接在 td 内,在 tr 内,当然在表内,因此重复父选择器。

有没有更好的方法可以做到这一点,我错过了?不幸的是,我没有很多使用 jQuery 的经验。

4

5 回答 5

6

您可以使用jQuery(this).closest("table") http://api.jquery.com/closest/

于 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

或者..您可以使用事件委托,例如 .on() 而不是 .click()。然后,您可以简单地使用 e.delegateTarget。

例如,

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