0

私はこのマークアップを持っています:

<b class="learn more">
Learn more <span class="closedTriangle">&#x25BA;</span><span class="openTriangle">&#x25BC;</span>
</b>

そしてこのjquery:

$('.learnMore').click(function() {
    $(this).next().slideToggle('fast');
    $('.learnMore + .closedTriangle').toggle();
    $('.learnMore + .openTriangle').toggle();
});

セレクターを$(this)でラップしようとしましたが、マークアップがこのコンテキストにないことがわかります。

隣接するセレクターを使おうとしていましたが、まだ勝っていません。矢印の間で表示/非表示を切り替えようとしていますが、特定のコンテキスト内でのみです。ページの周りにたくさんの「詳細」があるので、クラスを選択するだけでページ上のすべてのクラスに影響します

4

2 に答える 2

1

デモjsBin

  • HTML(クラス名)にタイプミスがありました
  • jQuery内では、 this parentlikeを参照するだけです。$('YourChildrenElementOf', this)

HTML:

  <b class="learnMore">  <!-- FIXED CLASS NAME TYPO -->
Learn more <span class="closedTriangle">&#x25BA;</span><span class="openTriangle">&#x25BC;</span>
</b>

jQuery:

$('.learnMore').click(function() {
    $('span', this).toggle();
});
于 2012-05-13T21:32:51.733 に答える
0

セレクターの+を削除します。

$('.learnMore  .closedTriangle')

クラス.learnMoreの要素の下にあるクラス.closedTriangleのすべての要素を意味します

また、マークアップには、学習などの2つの個別のクラスがあることに注意してください。.learnMoreクラスには要素はありません

于 2012-05-13T21:32:28.967 に答える