如何使用 jQuery 只选择一个同级?
我有这个代码:
<ul>
<li class="foo">foo text</li>
<li class="foo2">foo2 text</li>
<!-- more li here -->
<li class="bar">bar text</li>
<li class="bar2">bar2 text</li>
<!-- more li here -->
<li class="baz">clickme!</li>
</ul>
并且
$(".baz").click(function() {
alert("test: " + $(this).siblings(".bar")[0].text()); // Doesn't work
});
siblings(".bar")[0]
不起作用。 (没有弹出警告框,也没有 JavaScript 错误)
仅选择一个同级的正确方法是什么?
编辑: 我不想使用 prev()
或 next()
。
I have this code:
<ul>
<li class="foo">foo text</li>
<li class="foo2">foo2 text</li>
<!-- more li here -->
<li class="bar">bar text</li>
<li class="bar2">bar2 text</li>
<!-- more li here -->
<li class="baz">clickme!</li>
</ul>
and
$(".baz").click(function() {
alert("test: " + $(this).siblings(".bar")[0].text()); // Doesn't work
});
siblings(".bar")[0]
doesn't work. (no alert box pops up, and no javascript error)
What is the proper way to select one sibling only ?
Edit: I don't want to use prev()
or next()
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可以使用
eq
方法将匹配的元素集减少到一个在特定索引处:这将选择集合中的第一个元素。在您的情况下,您可以简单地使用
prev
作为您的元素正在寻找直接在单击的元素之前:您使用的数组表示法的问题是它返回 jQuery 对象中包含的实际 DOM 节点,并且不会有
text
方法。eq
是执行此操作的等效 jQuery 方法。You can use the
eq
method to reduce the matched set of elements to one at a specific index:That will select the first element in the set. In your case, you could simply use
prev
, as the element you're looking for comes directly before the clicked element:The problem with the array notation method you were using is that it returns the actual DOM node contained within the jQuery object, and that's not going to have a
text
method.eq
is the equivalent jQuery method to do this.您还可以使用first 从 jQuery 对象中获取第一个元素:
You can also grab the first element out of a jQuery object using first:
http://api.jquery.com/next/ 和/或 http://api.jquery.com/prev/。
所以它会是:
$(this).prev().text());
或$(this).next().text());
http://api.jquery.com/next/ and/or http://api.jquery.com/prev/.
So it would be:
$(this).prev().text());
or$(this).next().text());
您可以使用 next() 或 prev();
在这里小提琴 http://jsfiddle.net/fMT5x/2/
You could use next() or prev();
fiddle here http://jsfiddle.net/fMT5x/2/
您可以这样做:
但是,您必须确保 .baz 存在前一项
或(更好)
或(更差),仅供参考,切勿使用它:)
You can either do:
BUT, you have to be sure that a previous item exists to .baz
OR (Better)
OR (WORSE), just for reference, never use it :)
这里有一个链接,对于了解在 Jquery 中选择同级元素很有用。
如何使用 jQuery 仅选择一个同级
还可以使用 Jquery 选择器查找元素
有关详细信息,请参阅此链接 JQuery 中的 next()、nextAll()、prev()、prevAll()、find() 和同级
Here is a link which is useful to learn about select a siblings element in Jquery.
How to select only one sibling with jQuery
you can also find an element using Jquery selector
For more information, refer this link next(), nextAll(), prev(), prevAll(), find() and siblings in JQuery