我想选择一个父H2取决于被点击的元素 示例:
<ul><h2>Title1</h2>
<li>Test</li>
<li>sub menu
<ul>
<li><a href="#">link1</a></li>
</ul>
</li>
</ul>
<br/>
<ul><h2>Title2</h2>
<li>Test</li>
<li>ubmenu
<ul>
<li><a href="#">link2</a></li>
<li>sub sub menu
<ul>
<li><a href="#">link2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
我有三个位于不同位置的链接。 我的JS功能:
jQuery("a").bind('click', function () {
jQuery(this).parents("h2").html("okay!")
})
所以,我想更改父H2的内容,link1单击更改title1,link2必须更改title2。
答案 0 :(得分:5)
试试这个:
jQuery("a").bind('click', function () {
jQuery(this).closest("ul:has(h2)").find("h2").html("okay!")
})
注意,如果您将class
或id
放在顶级ul
上,则可以使选择器更加简单快捷。
<强>更新强>
以下是如何使父ul
上的类更简单:
<ul class="list-parent">
<h2>Title1</h2>
<li>Test</li>
<li>sub menu
<ul>
<li><a href="#">link1</a></li>
</ul>
</li>
</ul>
jQuery("a").bind('click', function () {
jQuery(this).closest(".list-parent").find("h2").html("okay!")
})
答案 1 :(得分:4)
h2
不是a
代码的父代,因此您必须遍历ul
,然后找到h2
jQuery("a").on('click', function () {
jQuery(this).parents("ul").find("h2").html("okay!")
});
答案 2 :(得分:2)
好的,a
没有h2
。但你可以这样做:
e.preventDefault();
$(this).closest('ul:has(h2)').find('h2').html('okay!');
这将首先找到ul
父级(它是包含所需h2
的最接近的父元素),然后它将找到h2
元素。
请务必注意,如果您的结构更改为在父h2
中包含更多ul
元素,那么它将无效。但我相信你知道那些事情
答案 3 :(得分:1)
h2
元素不是所点击元素的父元素,您可以将类添加到最顶层的ul
元素并使用closest
方法:
<ul class='parent'><h2>Title1</h2>
jQuery(this).closest("ul.parent").children("h2").html("okay!");
您可以使用jQuery选择器来选择具有当前标记的元素,但使用类可以使您的代码更加清晰和高效。
答案 4 :(得分:0)
jQuery(this).parent().parent().parent().parent().find("h2").html("okay!");
会这样做。
答案 5 :(得分:0)
使用find()
选项尝试您的代码,例如
jQuery("a").bind('click', function () {
jQuery(this).parents("ul").find("h2").html("okay!")
})