找不到下一个元素
Unable to find next element
我希望在一个页面上有多个元素,当单击页眉span时,这些元素将切换下一个内容span的可见性。所有内容跨度的内容都隐藏在文档中。
内容的切换在以整个类为目标时有效,但在尝试以正在单击的标题span上的下一个内容span元素为目标时无效。
当我们试图操作通过telerik radeditor 输入的文本时,使用了特定的标记
http://jsfiddle.net/hn5ss2au/
HTML
<p>
<span class="collapsibleHeader">Content Header</span><br />
<span class="collapsibleContent">Sed dignissim velit non congue consequat.</span>
</p>
<p>
<span class="collapsibleHeader">Content Header</span><br />
<span class="collapsibleContent">Sed dignissim velit non congue consequat.</span>
</p>
JQuery
$(document).ready(function () {
$('.collapsibleContent').hide();
$('.collapsibleHeader').click(function (e) {
$(this).parent().next('.collapsibleContent').toggle();
e.preventDefault();
});
});
您要向上一级,到达p
元素,然后到达next
下一个元素(请参阅下一个注释),但.collapsibleContent
是该p
的子元素,而<br/>
实际上是next()
元素到p
(因此过滤器也不匹配任何内容)。next()
只返回下一个元素,然后应用过滤器以查看它是否匹配。
放下parent()
并将nextAll()
与选择器一起使用:
$(document).ready(function () {
$('.collapsibleContent').hide();
$('.collapsibleHeader').click(function (e) {
$(this).nextAll('.collapsibleContent').toggle();
e.preventDefault();
});
$('.collapsibleContent2').hide();
$('.collapsibleHeader2').click(function (e) {
$('.collapsibleContent2').toggle();
e.preventDefault();
});
});
JSFiddle:http://jsfiddle.net/TrueBlueAussie/hn5ss2au/3/
您可以将siblings()
与相同的筛选器一起使用,但它比nextAll()
慢。如果每个匹配中碰巧有一个以上,也添加first()
例如
$(this).nextAll('.collapsibleContent').first().toggle();
注:nextall
比siblings()
和parent().children()
的替代方案快:http://jsperf.com/jquery-next-vs-siblings/5
next不起作用的原因是因为您使用的是parent()
。
在click
回调函数中,您正在调用$(this).parent()
。当回调被调用时,$(this)
将是.collapsibleHeader
,所以当您调用.parent()
时,它将返回p
标记。
要获得.collapsibleContent
,您必须调用.children('.collapsibleContent')
,而不是.next()
。
您的代码如下:
$(this).parent().children('.collapsibleContent').toggle();
jsFiddle:http://jsfiddle.net/qetcd7o4/
访问父级,然后.next()将获得下一个段落元素,而不是内容。在这种情况下,没有必要打家长。你需要获取具有类collapsibleContent.的点击元素的兄弟元素。在点击的elem上获取next也不起作用,因为从技术上讲,在标头之后的下一个elem是break标记。下面的方法可以做到这一点:
$('.collapsibleHeader').click(function (e) {
e.preventDefault();
$(this).siblings('.collapsibleContent').toggle();
});
- 滚动到容器中的下一个元素-几乎到了
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 真正的下一个具有特定类的元素
- jQuery转盘下一个元素没有滑入
- 获取锚点的下一个元素
- j查询 如何选择当前元素之后的下一个元素
- 获取下一个或上一个隐藏元素的高度,以设置父元素的高度.jquery.
- 如何在 JavaScript 中获取下一个元素和更新
- jQuery网站的键盘快捷键,焦点使用左键和右键转到上一个或下一个元素
- 如果上一个元素为空,则隐藏下一个元素
- 使用表时,Jquery Next()未正确突出显示下一个元素
- 如何将所有下一个元素包装到
- 获取活动元素之后的下一个元素
- jQuery-在每个复选框中获取下一个元素
- 找不到下一个元素
- 正在从元素中获取下一个className
- 如何获取下一个元素's值-jquery
- 如何选择 $(this) 之后的下一个元素
- 专注于下一个元素
- Jquery 选择元素下一个/上一个/最近