0
$(document).ready(function(){
  $("#menu ul").children('li').each(function(){
    var href = $(this).find('a').attr('href');
    var wpl = window.location.pathname;
    if( href.indexOf(wpl) != -1 ){
      if( wpl.indexOf( "category" ) != -1){
        $("#products").attr('id','prodon');
      }
      if( wpl.indexOf( "news" ) != -1){
        $("#news").attr('id','newson');
      }
      if( wpl.indexOf( "wheretobuy" ) != -1){
        $("#WTB").attr('id','WTBon');
      }....

それはもう少し長く、別のボタンになります。各ボタンは画像であり、すべてが一意であるため、この方法でのみ実行しました。これは HTML のスニペットです。

<li><a href="/news/index" id="news"></a></li>
<li>
  <a href="/site/wheretobuy" id="WTB"></a>
  <ul>
    <?php echo '<li>'.CHtml::link(CHtml::encode("Showrooms"), array('/showroom/index')).'</li>'; ?>
    <?php echo '<li>'.CHtml::link(CHtml::encode("Dealers"), array('/dealers/index')).'</li>'; ?>
    <?php echo '<li>'.CHtml::link(CHtml::encode("Hypermarket and Merchants"), array('/hyper/index')).'</li>'; ?>
  </ul>
</li>

したがって、親ノードはすべて問題ありません。また、子の URL に親の URL (カテゴリ/猫) が含まれている場合、アクティブなボタンが表示されます。子の 1 つが URL であるが、同じ文言ではない場合、親のアクティブな img を適用する方法を知りたいです。もっと多くの IF を実行できますが、もっと簡単な方法があると思います。

編集....再び

  if( wpl.indexOf( "wheretobuy" ) != -1 || $('#menu ul').find('.WTBon').parent().closest('li').indexOf( "wheretobuy" ) != -1 ) { 

    $('.WTB').addClass('WTBon');

}

だから私がチェックしようとしているのは、ノードの親がURLにwheretobuyを持っているかどうかです

4

1 に答える 1

0

これを試して:

代わりに ids を追加しadd as class nameます。

$('#menu ul').find('.idon').parent()
             .closest('li').addClass('.idon'); // <--id like //newson//

最新のものの更新:

if($('#menu li a[href*="wheretobuy"]').length){
   $('#menu a[href*="wheretobuy"]').parent('li').addClass('WTBon');
}

ノート:

1 つのページで複数の要素に同じ ID を使用することはお勧めできません。それは良い習慣ではありません。

This applies in your case tooなぜならyou have applied it by making the active one as id、できるからですuse it as a class instead

于 2013-02-14T08:30:46.633 に答える