0

LI 内のリンクにクラスがあるかどうかを調べようとしています。どうすればいいですか?これが私がこれまで試してきたことです:

(特定の李を隠そうとしている)

<a class="filtergallery" id="p" href="#">Portraits</a> <a class="filtergallery" id="n" href="#">Newborn</a> <a class="filtergallery" id="pe" href="#">Pets</a>

<ul class="portfolio-wrap">

<li><a class="p" href="#" title="First Pic"><img src="#" alt="First Pic" /></a></li>
<li><a class="pe" href="#" title="Second Pic"><img src="#" alt="Second Pic" /></a></li>
<li><a class="n" href="#" title="Third Pic"><img src="#" alt="Third Pic" /></a></li>
<li><a class="pe" href="#" title="Fourth Pic"><img src="#" alt="Fourth Pic" /></a></li>

jQuery:

        $('.filtergallery').click(function(event){

        var theid = $(this).attr('id');
        $('.portfolio-wrap li').each(function(){

            if (!hasClass(theid)) { // I need to see if the hyperlink inside the LI has this class...?
                hide();
            }

        });

    })
4

2 に答える 2

1

セレクターでアンカータグを実際に選択する必要があります。このフィドルを見てください。さらに、あなたが持っているコードは、クリックに基づいてリンクを再表示しません(クリック時にのみ非表示になり、別のリンクがクリックされたときに再表示されません-それが要件である場合)。すべてのリンクを表示する関数を作成し、クリック時にそれを呼び出してから、該当するリンクを非表示にすることができます。

http://jsfiddle.net/UV7nS/

<a class="filtergallery" id="p" href="#">Portraits</a> <a class="filtergallery" id="n" href="#">Newborn</a> <a class="filtergallery" id="pe" href="#">Pets</a>

<ul class="portfolio-wrap">

<li><a class="p" href="#" title="First Pic"><img src="#" alt="First Pic" /></a></li>
<li><a class="pe" href="#" title="Second Pic"><img src="#" alt="Second Pic" /></a></li>
<li><a class="n" href="#" title="Third Pic"><img src="#" alt="Third Pic" /></a></li>
<li><a class="pe" href="#" title="Fourth Pic"><img src="#" alt="Fourth Pic" /></a></li>

</p>

$('.filtergallery').click(function(event){

        var theid = $(this).attr('id');
        $('.portfolio-wrap li a').each(function(){

            if (!$(this).hasClass(theid)) { // I need to see if the hyperlink inside the LI has this class...?
                $(this).hide();
            }

        });

    })​
于 2012-12-08T03:29:46.880 に答える
0
$('.filtergallery').click(function(event){
  $('.portfolio-wrap li:not(:has(a.'+$(this).attr('id')+'))').hide();
}

http://jsfiddle.net/T6GLr/

<3ワンライナー:)


編集:申し訳ありませんが、持っていない人を非表示にしたかったのです。コードを編集しました。

于 2012-12-08T03:33:12.337 に答える