我正在使用parentsUntil()打开当前链接上方的所有uls。我已阅读文档,但由于某种原因,它没有按预期工作。以下内容将所有内容隐藏在dom的顶部。
HTML
<ul class ='product-categories'>
<li><a href ='http://example.com/link1'>Link 1</a>
<ul>
<li><a href ='http://example.com/link/sub-link1'>Sub link 1</a></li>
<li><a href ='http://example.com/link/sub-link2'>Sub link 2</a></li>
<li><a href ='http://example.com/link/sub-link3'>Sub link 3</a></li>
</ul>
</li>
<li><a href ='http://example.com/link2'>Link 2</a></li>
<li><a href ='http://example.com/link3'>Link 3</a></li>
<li><a href ='http://example.com/link4'>Link 4</a></li>
</ul>
jquery的
var url = window.location.href;
$('a[href= "' + url + '"]')
.parentsUntil( $('ul.product-categories') )
.slideToggle('fast');
它跳过了产品类别,而且一直在继续。如果我提供'ul'作为过滤器:
$('a[href= "' + url + '"]')
.parentsUntil( $('ul.product-categories'), 'ul' )
.slideToggle('fast');
除了产品类别外,它会切换页面上的每个ul。
编辑:假设这是由于真实页面上的冲突,因为小提琴工作正常。取下链接,并试图找到另一种方法来做到这一点。
答案 0 :(得分:-1)
应该是
$('a[href= "' + url + '"]').parentsUntil('ul.product-categories').slideToggle('fast');
您将函数传递给选择器,而不是jQuery对象。 (编辑 - 你可以传递一个jQuery对象,但在这种情况下它是愚蠢的。)