我遇到了一个问题,如何使用.closest,.find和其他可能的jQuery方法查找URL。该页面的结构为:
(x^4 -3x^2 + 4)/(x-2) = x^3 + 2x^2 + x + 2 with a remainder of 8.
您会看到许多内部列表。 我需要找到ul.good li的href值。问题是,如果我使用close()找到ul.good,我无法找到确切的li,它是 this 的父级,我从这里“移到”了ul.good。 / p>
因此,问题是如何从a <-this获得/ findme值。有可能吗?
需要澄清的是,href / findme在ul.good中是第一级。
a <-这要深得多(级别未知)。
谢谢。
答案 0 :(得分:1)
一种可能的方法是首先收集li
的所有ul.good
个孩子:
$goodUl = $this.closest('ul.good');
$lis = $goodUl.children();
...然后将其用作closest
参数:
$liParentOfThis = $this.closest($lis);
这将为您提供育儿$li
,然后发现a
应该很简单:
$a = $liParentOfThis.children('a');
这很简洁,但是效率不高,因为您需要两次上链。您可以通过循环使其更快:
$check = $this;
while (($check = $check.parent().closest('ul')).length) {
if ($check.is('.good')) break; // already went up too far
$a = $check.prev('a');
if ($a.length) break; // found it
}
在每个步骤中,您都寻找下一个最接近的ul(因为从元素本身开始进行.closest
查找,所以父元素是必需的),并检查它是否具有先前的同级a
需要。如果是这样,则搜索完成。
答案 1 :(得分:0)
这是一个简单的解决方案。希望这对您有用:)
$("#here").on("click",function(){
alert($(this).parents("ul.good").find("> li > a").attr("href"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<ul>
<ul class="good">
<li>something</li>
<li>something</li>
<li>
<a href="/findme">findme</a>
</li>
<ul>
<ul>
<li>
<a href="#" id="here">I am here</a>
</li>
</ul>
</ul>
</ul>
</ul>
</ul>