1

これが機能する理由: http://jsfiddle.net/4q5du/

これはそうではありませんが: http://jsfiddle.net/zcuYw/

私が変更している唯一のことは、2 番目のものでは div 内のリンクをターゲットにしているのに対し、最初のものではリンクを直接ターゲットにしているということです。2番目のものが機能しないのはなぜですか?

$('div.more').hide()
$('a.showmemore').click(function(){
    $(this).next('div').slideToggle()
})

$('div.more').hide()
$('div.maurice a').click(function(){
    $(this).next('div').slideToggle()
})
4

4 に答える 4

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
})
于 2013-08-11T20:12:07.803 に答える
2
$('div.more').hide()
$('div.maurice a').click(function(e, ui) {
  e.preventDefault();
  $(this).parent().next('div').slideToggle()
})

あなたは恥ずかしがり屋.parent()でした。

于 2013-08-11T20:12:29.860 に答える
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()関数は直接の兄弟を返すので、あなたの場合は1レベル上に移動してからparent()ちょうど使用する必要がありますnext()

結果は

$('div.more').hide()
$('div.maurice a').click(function(){
   $(this).parent().next('div').slideToggle()
});

デモ: http://jsfiddle.net/zcuYw/1/

于 2013-08-11T20:15:00.887 に答える
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>

存在しません

1 つ上 (.parent()または.closest('div')) に移動してから、.next()

于 2013-08-11T20:18:22.377 に答える