Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用parent()三次,有更好的方法吗?_Javascript_Jquery_Html - Fatal编程技术网

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

Javascript 使用parent()三次,有更好的方法吗?,javascript,jquery,html,Javascript,Jquery,Html,我有一些代码如下所示: jQuery(this).parent().parent().parent().parent().next(".results-table").css("display", "block"); 基本上,单击表内的链接后,下面的结果表将显示,问题是此链接位于td内,而td位于tr内,tr当然位于表内,因此重复的父选择器 有没有比这更好的方法让我错过了?不幸的是,我对jQuery没有太多的经验。您可以使用jQuery(this)。最近的(“表”) 或 甚至 jQuery(t

我有一些代码如下所示:

jQuery(this).parent().parent().parent().parent().next(".results-table").css("display", "block");
基本上,单击表内的链接后,下面的结果表将显示,问题是此链接位于td内,而td位于tr内,tr当然位于表内,因此重复的父选择器

有没有比这更好的方法让我错过了?不幸的是,我对jQuery没有太多的经验。

您可以使用
jQuery(this)。最近的(“表”)

甚至

jQuery(this).closest('.results_table').css("display", "block");
取决于所需的结果和HTML元素

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

这可能会有帮助

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

比如说,

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

根据您的DOM,.parents(“您的选择器”)可能会工作得更好。您是否可以在表中添加一个示例块来显示元素上的任何类或id?这比解释元素的布局更为有益。你知道与最近的父元素相比是否有任何好处,反之亦然吗?在链接页面中,
.closest
.parents()
之间有两列比较。简而言之,
.closest()
将在找到第一个最近的父表时停止,而
.parents()
将一直爬升到文档级别。parents查找无、一个或多个元素,而closest将查找无或一个元素,并包括根元素。
jQuery(this).closest('.results_table').css("display", "block");
$(this).parents(":eq(3)")
$(parent).on("click", link, function(e) {
    jQuery(e.delegateTarget).next(".results-table").css("display", "block");
});