0

ほぼ分かっていると思いますが、まだ十分ではありません...

DOM の 1 レベル上と 2 レベル下の要素に特定の文字列が含まれている場合にのみ、この HTML から a.rate-button を選択したいと考えています。これがjQueryセレクターの限界を広げていることは知っていますが、それは単なる楽しみであり、本番用ではありません.

HTML:

<div class="comment">

    <div class="submitted">
        <a href="#" title="View user profile.">Blow, Jo</a>  
    </div><!-- CLASS submitted -->

    <div class="content">
        <p>blah</p>
        <p>blah</p>
        <p>blah</p>
  </div><!-- CLASS content -->

      <ul class="links">
        <li class="comment_delete first"><a href="/comment/delete/1204">delete</a></li>
            <li class="comment_edit"><a href="/comment/edit/1204">edit</a></li>
            <li class="flag_content_add">hippo</li>
            <li class="rate_thumbup_comments last">
                <span>
                    <div class="rate-widget-1 rate-widget clear-block rate-average">
                        <a class="rate-button" rel="nofollow" href="#">up</a>
                        <div class="rate-info">1 person likes this.</div>
                    </div>
                </span>
            </li>
        </ul>

</div>

これまでに取得したjQueryセレクター:

$('.submitted a:contains("Blow")').parent().parent().next('.links .rate_thumbup_comments .rate-widget').find('a').css('display', 'none');

繰り返しますが、コンテナ div.submitted に「Blow」の文字列が含まれている場合にのみ、li.rate_thumbup_comments 内にある div.rate-widget 内のタグを選択したいと思います。これらはすべてコンテナ div.comment 内にあります

4

2 に答える 2

1

たとえば、特定のユーザーのコメントに対するすべての評価ウィジェットを非表示にするとします。私が間違っている場合は修正してください。

$('.submitted a:contains("Blow")').closest(".comment").find('.rate-widget a').hide();

それはあなたが本質的にやろうとしていることですか?

.next()次の要素のみを選択し、セレクターが渡された場合にそれが一致する場合にのみ選択します。すぐ隣にない要素を選択する必要がある場合は.nextUntil(targetselector).next()、またはあなたの場合は、.nextUntil(".links").next()

于 2012-06-13T19:28:58.433 に答える
1

これはあなたが提供したhtmlで動作するようです:

$('.submitted a:contains("Blow")').parent().parent().children('.links').find('.rate-button').css('display', 'none');
于 2012-06-13T19:32:55.413 に答える