-1

少し複雑で、これをうまく機能させる正しい方法を見つけることができません。いくつかの例を使って説明してください。生成されたナビゲーションは次のようになります。

 <ul class='cat-nav'>
     <li class="c1">
        <h1>
           <a href="catalog.php?catid=8">main category 1</a>
        </h1>
     </li>
     <li class="c2">
        <h1>
           <a href="catalog.php?catid=9">main category 2</a>
        </h1>
           <ul class='subcat-nav'>
               <li>
                  <h1>
                     <a href="catalog.php?catid=7">main cat 2 - 1st subcat</a>
                  </h1>
               </li>
               <li>
                  <h1>
                     <a href="catalog.php?catid=19">main cat 2 - 2nd subcat</a>
                  </h1>
               </li>
           </ul>
      </li>
 </ul>           

今私がやろうとしているのは、サブ猫がいるリーにたどり着くことです

(内部に別のulがあることを意味します)、そのリンクを無効にして、メインの猫が実際のリンクではなくタイトルのみを再生するようにします。

私はこれまでのところ成功していない次のことを試しました

$(document).ready(function() {
$('ul.cat-nav li').each(function() {    
    if($(this).children('ul').length == 1) {
    $('a').replaceWith(function() { return $(this).contents(); });  
    }
});
});

このスクリプトは、ul.cat-nav のすべてのリンクを無効にしますが、これは私にとっては間違っています...

4

2 に答える 2

0

これを試してください

$(document).ready(function() {
    $('ul.subcat-nav').each(function() {  // start from subcat-nav  
        $(this).parent().find('h1:first a')
            .replaceWith(function() { // your code
                return $(this).contents();
            });

    });
});
于 2012-10-03T14:56:02.307 に答える
0

.subcat-navを直接選択し、 を使用.siblings()して をターゲットにし<h1>、 を使用.find()して child をターゲットにしてから<a>、関数を呼び出してタイトルのみにします。より便利な機能については、 jQuery の DOM トラバーサル手法の完全なリストを参照してください。

$(document).ready(function() {
    $('ul.cat-nav li ul.subcat-nav')
        .siblings('h1')
        .find('a')
        .replaceWith(function() { return $(this).contents(); }); 
});
于 2012-10-03T14:44:34.410 に答える