1

トグルされたdiv内にリストがあります...

<li>
    <a href="#">Link</a>
    <ul stlye="display:none;">
        <li><a href="http://www.google.com">Child Link</a></li>
    </ul>
</li>

子リンクがクリックされた場合にのみ子 UL の表示を切り替える jQuery を作成しましたが、機能しなくなりました (Google には送信されません)。

//  Dropdown
$('.archives ul li a').click(function(){
    $(this).parent().find('ul').slideToggle();  
    return false;
}); 
4

4 に答える 4

1

STYLE のスペルが間違っています。

stlye=

あなたの投稿のタイトルから、あなたはこのようなものが欲しいようです...

$('.archives ul li a').click(function(){
    var $children = $(this).parent().find('ul');
    $children.slideToggle();
    return $children.length > 0 ? false : true;
});

子 UL が見つかった場合にのみ、false が返されます。

于 2013-03-25T19:05:16.537 に答える
0

あなたが示したものがulclass の要素内にあるa 内にあると仮定するとarchives、セレクターは親アンカーと子アンカーの両方.archives ul li aに一致します。これは、子孫セレクターを使用したため、ハンドラーが子に対して呼び出され、これにより、デフォルトのアクション(リンクをたどる)を実行できなくなります。return false;

子リンクではなく、前のリンクに対してのみハンドラーをトリガーすることが目標である場合は、より具体的にする必要がある場合があります。ただし、より具体的に説明するには、十分なマークアップが表示されていませんマークアップが次のようになっていると仮定すると、次のようになります。

<div class="archives">
  <ul>
    <li>
      <a href="#">Link</a>
      <ul style="display:none;">
          <li><a href="http://www.google.com">Child Link</a></li>
      </ul>
  </li>
  </ul>
</div>

...次に、「子リンク」アンカーではなく「リンク」アンカーのみに一致するセレクターは次のようになります.archives > ul > li > a(たとえば、直接の子セレクターを使用)。

stlyeまた、ではなくがあったことに注意してください。ただし、それstyleは質問のタイプミスにすぎないと思います。(なぜ人々はコピーと貼り付けを使わないのですか?! ;-) )

于 2013-03-25T19:03:28.433 に答える
0

ChildLink もセレクターによって一致し、クリック ハンドラーでは、デフォルトのアクション (「Google に移動」) を防止しています。

したがって、トグルリンクのみを取得するようにセレクターを調整するか、これを使用する必要があります。

$('.archives ul li a').click(function(e){
    if ($(this).siblings('ul').slideToggle().length) // if we found a list to toggle
        e.preventDefault(); // or return false
}); 
于 2013-03-25T19:05:58.710 に答える
-1

ステートメントはデフォルトのリンク アクションをキャンセルしているためreturn false、引き続き機能することを許可するリンクをターゲットにしないように、より具体的にする必要があります。

これを試して:

$('.archives > li > a').click(function () {
    $(this).parent().find('ul').slideToggle();
    return false;
});

jsFiddle の例

子セレクターを使用し>、ターゲットを最も外側のリストの直接の子リンクのみに変更すると、サブリンクは選択されず、引き続き機能します。あなたのコード$('.archives ul li a')では、トップレベルだけでなく、すべての子リンクに適用されます。

于 2013-03-25T19:06:21.120 に答える