3

私はリストを持っています:

 ...
 <li>
      <a href="#" class="slide"></>Click me</a>
      <div class="newsitem">
           ...some content here
      </div>
 </li>
 <li>
      <a href="#" class="slide"></>Click me</a>
      <div class="newsitem">
           ...some content here
      </div>
 </li>
 ...

次のようにslideToggleを使用したい:

$(".slide").click(function() {
     $(".newsitem").slideToggle("fast");
     return false;
});

問題は、異なるクラスを次のクラスslideだけにしたいということです。などを使ってみました。slideTogglenewsitem.closest().nextSibling()

この簡単な(おそらく)問題について少し助けてください。

4

2 に答える 2

4

交換:

$(".newsitem").slideToggle("fast");

と:

$(this).next(".newsitem").slideToggle('fast');

next()メソッドのドキュメントは次のとおりです

一致した要素のセット内の各要素の直後の兄弟を取得します。セレクターが提供されている場合、そのセレクターと一致する場合にのみ、次の兄弟を取得します。

これが実際の例です:http://jsfiddle.net/andrewwhitaker/3DqNF/

また、無効なHTMLがいくつかありました。修正されたHTMLは次のとおりです。

<ul>
    <li>
        <a href="#" class="slide">Click me</a>
        <div class="newsitem"></div>
    </li>
    <li>
        <a href="#" class="slide">Click me</a>
        <div class="newsitem"></div>
    </li>
</ul>
于 2010-12-23T22:17:12.400 に答える
-1

うーん、多分これはうまくいく:

$(".slide").each(function(){
  $(this).click(function() {
    $("this > .newsitem").slideToggle("fast");
    return false;
  });
});
于 2010-12-23T22:17:26.263 に答える