jquery 最接近的函数无法与 addClass 一起使用
我对 jquery 最接近的函数有问题。 我想制作一个菜单,您可以在其中单击多个项目。 我想知道的是: 如果有人单击菜单中已选定的项目,则刚刚取消选择的项目前面是否有选定的项目。 我找到了最接近的函数,如果存在与选择器匹配的 dom 对象,则返回 1;如果不存在,则返回 0。 因此,我添加为每个单击的菜单项选择的类,并在再次单击时将其删除。
当您单击menu_2,然后单击menu_3,然后再次单击menu_3时,最接近的值应该是1,因为在我刚刚取消选择的项目前面有一个选定的项目。
但这不是我的小脚本的结果,也许你知道一些事情?
问候, Peter
$('li').click(function()
{
if ($(this).hasClass('selected'))
{
$(this).removeClass('selected');
alert($(this).closest('.selected').size());
}
else
{
$(this).addClass('selected');
}
});
.selected
{
background-color: red;
}
<ul>
<li>menu_1</li>
<li>menu_2</li>
<li>menu_3</li>
<li>menu_4</li>
<li>menu_5</li>
</ul>
这是我的结构:
menu_0 <- selected
menu_0_0
menu_0_1
menu_0_2 <- selected
menu_0_2_0
menu_0_2_1 <- selected
menu_1
...
现在我取消选择menu_0_2_1,并且最接近的函数应该给我DOM对象menu_0_2,因为这是具有“selected”类的最接近的对象,如上例所示。
i have problem with the closest function from jquery.
i want to make a menu where you can click several items.
what i want to know is:
if someone clicked an already selected item in the menu, is there a selected item in front of the just deseleceted item.
i found the closest function which gives back 1 if there is a dom object which matches the selector and 0 if there is non.
so i add the class selected for every clicked menu item and remove it when it gets clicked again.
when you click menu_2, then menu_3, then again menu_3 the closest value should be 1 because there is a selected item in front of the one i just deseleceted.
but this is not the result of my little script, maybe you know something?
regards,
peter
$('li').click(function()
{
if ($(this).hasClass('selected'))
{
$(this).removeClass('selected');
alert($(this).closest('.selected').size());
}
else
{
$(this).addClass('selected');
}
});
.selected
{
background-color: red;
}
<ul>
<li>menu_1</li>
<li>menu_2</li>
<li>menu_3</li>
<li>menu_4</li>
<li>menu_5</li>
</ul>
this is my structure:
menu_0 <- selected
menu_0_0
menu_0_1
menu_0_2 <- selected
menu_0_2_0
menu_0_2_1 <- selected
menu_1
...
now i deselect menu_0_2_1 and the function closest should give me the DOM object menu_0_2, because this is the closest object which has the class "selected" as seen in the example above.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您对
closest()
的用途感到困惑:如果您也想获取兄弟姐妹,请使用
siblings()
,如果您想立即使用next()
..etc:示例链接。
return false;
在这里很重要,可以防止气泡效应!You are getting confused by the purpose of
closest()
:If you want to get the siblings too, then use
siblings()
, if you want the immediate next usenext()
..etc:Example link. The
return false;
is important here to prevent the bubble effect!