使用parent()三次,有更好的方法吗?

时间:2012-09-20 12:30:49

标签: javascript jquery html

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

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

基本上,点击表格内部的链接后,会显示以下结果表,问题是这个链接位于一个td里面,它在一个tr里面,当然在一个表格里面,因此重复的父节点选择器。

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

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:2)

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

甚至

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

取决于您所需的结果和HTML元素。

答案 3 :(得分:0)

$(this).parents(":eq(3)")

这可能会有所帮助

答案 4 :(得分:0)

或者......您可以使用事件委派,例如.on()而不是.click()。然后,您只需使用e.delegateTarget。

例如,

$(parent).on("click", link, function(e) {
    jQuery(e.delegateTarget).next(".results-table").css("display", "block");
});