2

div内のクラス「main」で最初のリンクを強調表示しようとしています。存在しない場合は、最初のリンクを強調表示します。

すなわち:

<div class="group1">
 <a href="product1">product1</a>
 <a href="product2" class="main">product2</a>
 <a href="product3">product3</a>
</div>

<div class="group2">
 <a href="product1">product1</a>
 <a href="product2">product2</a>
 <a href="product3">product3</a>
</div>

だからgroup1 product2、ハイライトを取得し、その中group2になりますproduct1

今、私はそれをこのようにやっています:

 obj=$('.group2 a.main').first();
 if (obj.length==0) {obj=$('.group2 a').first();}
 obj.css('color','red');

しかし、もっとコンパクトな方法があるのではないかと思っていました。

$('.group1 a.main,.group1 a').first().css('color','red') 

jqueryが要素をドキュメントの順序で返すため、機能しません。これにより、間違った結果が得られます。

4

5 に答える 5

0
$(function(){  
    // Iterating over each div
    $('div').each(function(){  

       if($(this).find('a.main:first').length){
         // If any hyperlink with class main is present
         $(this).find('a.main:first').css({'color':'red'});
       }else{
         // Select any hyperlink
         $(this).find('a:first').css({'color':'red'});
       }

    });   
 });

ライブデモ

于 2013-03-15T10:31:48.763 に答える
0

で試してみてください

 obj=$('.group2 a.main').eq(0).css({'color':'red'});

また

obj=$('.group2 a.main').eq(0).style('color','red');
于 2013-03-15T10:27:46.477 に答える
0

最初に疑似クラスを使用します。

$('.group2 a.main:first').css({'color':'red'});

または、変数を使用すると、次のようになります。

$obj = $('.group2 a.main:first');
if(!$obj.length)
    $obj = $('.group2 a:first');
$obj.css('color','red');

各グループでこれを行う必要がある場合は、次のようになります。

$('div[class^=group]').each(function(i, e) { 
    $obj = $(e).find('a.main:first');
    if(!$obj.length)
        $obj = $(e).find('a:first');
    $obj.css('color','red');
});

このフィドルを参照してください。

于 2013-03-15T10:28:32.430 に答える
0
$('div[class^=group] a')
    .filter(':has(a.main) a.main, :not(:has(a.main)) a:first-child')
    .css({color:'red'})

ここに示されているように:http://jsfiddle.net/6AWmq/2/

于 2013-03-15T10:37:41.603 に答える
0

これで試してみてください:

var obj = $('div[class^="group"]');
obj.each(function(){
   if($('a',this).hasClass('main')){
      $('.main').css('color','red');
   }else{
      $('a:first',this).css('color','red');
   }
});

フィドル

于 2013-03-15T10:38:35.413 に答える