为什么这样做: http://jsfiddle.net/4q5du/
虽然这不是: http://jsfiddle.net/zcuYw/
我唯一要改变的是,在第二个中,我的目标是div中的链接,而在第一个中,我直接瞄准链接。为什么不是第二个工作?
$('div.more').hide()
$('a.showmemore').click(function(){
$(this).next('div').slideToggle()
})
VS
$('div.more').hide()
$('div.maurice a').click(function(){
$(this).next('div').slideToggle()
})
答案 0 :(得分:3)
$('div.more').hide()
$('div.maurice a').click(function (e) {
e.preventDefault(); // As in your example, you're click on anchor so you
// you need to prevent default anchor behavior
$(this)
.parent() // jump to .maurice
.next('div') // got next div
.slideToggle() // show effect
})
答案 1 :(得分:2)
$('div.more').hide()
$('div.maurice a').click(function(e, ui) {
e.preventDefault();
$(this).parent().next('div').slideToggle()
})
你很害羞.parent()
。
答案 2 :(得分:2)
它不起作用的原因。
你有这个代码
$('div.more').hide()
$('div.maurice a').click(function(){
$(this).next('div').slideToggle()
});
使用此HTML
<div class="maurice"><a href="#">Hello</a></div>
<div class="more">
Hey Ohhhh
</div>
当你点击a
时,如果没有这样的东西,你想要滑动切换下一个div
元素,next()
函数会返回直接兄弟,所以在你的情况下你需要使用parent()
上升一级,然后只使用next()
结果
$('div.more').hide()
$('div.maurice a').click(function(){
$(this).parent().next('div').slideToggle()
});
答案 3 :(得分:0)
点击$('div.maurice a')
不起作用导致next()
$(this).next('div').slideToggle();
在
<div class="maurice"> <a href="#">THIS</a> NO ELEMENT HERE </div>
<div class="more">
IT'S HERE!
</div>
不存在
你应该向前推进(.parent()
或.closest('div')
)而不是定位.next()