我有这个HTML:
<nav id="services">
<ul>
<li><a href="/uplighting">uplighting</a></li>
<li><a href="/backdrops">illuminated backdrops</a></li>
<li><a href="/monograms">monogram projection</a></li>
<li><a href="/table">table lighting</a></li>
<li><a href="/lanterns">outdoor lanterns</a></li>
</ul>
</nav>
和这个jquery:
$("#services ul li a").mouseenter(function(){
pop_item_link = $(this).attr('href');
$("<article id=\"pop_item\" href=\"" + pop_item_link + "\"></article>").appendTo("#services");
});
工作正常。 但是,如果我改为使用父选择器:
$("<article id=\"pop_item\" href=\"" + pop_item_link + "\"></article>").appendTo(this).parent().parent().parent();
在锚点后插入html:
<nav id="services">
<ul>
<li><a href="/uplighting">uplighting</a></li>
<li><a href="/backdrops">illuminated backdrops</a>
<article id="pop_item" href="/backdrops"></article>
</li>
<li><a href="/monograms">monogram projection</a></li>
<li><a href="/table">table lighting</a></li>
<li><a href="/lanterns">outdoor lanterns</a></li>
</ul>
</nav>
使用nearest()
也是如此有谁知道我在这里做错了什么?我想避免使用id选择器,因此我可以将相同的代码用于另一个菜单。
答案 0 :(得分:1)
你应该把它作为
.appendTo($(this).parent().parent().parent())
OR
.appendTo($(this).closest('nav')
请注意,.parent()
和.closest()
位于.appendTo()
答案 1 :(得分:1)
你想要:
.appendTo($(this).parent().parent().parent())
或
.appendTo($(this).closest('nav'))
答案 2 :(得分:0)
我愿意
.appendTo($(this).parentsUntil('nav').parent('nav');
答案 3 :(得分:0)
.appendTo(this)
即将发挥作用,因为this
a
是a
追加.parent()
的原因。因此,当您添加nav
时,您就像在准备好操作匹配元素的父级时那样链接方法。
您想要附加到.appendTo( $(this).closest('nav') );
,如下所示:
{{1}}