我的页面上有一个无序列表,其中包含每个LI中的列表。
目前它们都设置为不显示任何内容,但在点击ID时要切换显示设置。
我写了以下内容,但我似乎无法将其付诸实践,有谁知道我哪里出错?
//Product range expander
$('.product-range ul li a').click(function() {
$(this).find('.product-range ul li ul').slideDown('slow');
//$('.product-range ul li a').next('ul').toggle();
return false;
});
答案 0 :(得分:3)
$(this)
选择已点击的元素(即锚元素)。.parents("li")
查找锚点的第一个匹配父级。这样我们就可以找到与ul
相同的li
中包含的a
。.find("ul")
查找ul
元素内的li
元素。$('.product-range ul li a').click(function() {
$(this).parents("li").find("ul").slideDown('slow')
return false;
});
或者,您可以使用siblings
:
$('.product-range ul li a').click(function() {
$(this).siblings("ul").slideDown('slow')
return false;
});
但是我更喜欢找到共同父项,然后找到该元素,以防标记发生变化。
答案 1 :(得分:1)
在您的代码中this
指的是使用jQuery 找到的锚点。在它下面你没有UL> LI结构我假设。为了找到正确的元素,请将其更改为:
//Product range expander
$('.product-range ul li a').click(function() {
$('.product-range ul li ul').slideDown('slow');
return false;
});
答案 2 :(得分:0)
$(this).find('ul').slideDown('slow');
应足以显示嵌套列表。
答案 3 :(得分:0)
请试试这个。
$(this).children().find('ul').slideDown('slow');