0

768px 以下でアクティブになるレスポンシブ Web サイト用のレスポンシブ サブメニューを作成しました。jQuery が親リスト アイテムのリンクを削除し、サブメニュー onClick を表示するように設定しました。

問題は、子を持たない親があり、子を持つ親要素のリンク (href) のみを削除しようとしていることです。しかし、If ステートメントに適用しても、子がない場合は親リンクが削除されず、機能しませんでした。そこで兄弟を試してみましたが、そのほうが理にかなっていると思いました。しかし、それはまだそのように振る舞っていません。

これが私のjQueryです:

    if (jQuery(".navigation > ul > li > a").siblings("ul")){
        jQuery(".navigation > ul > li > a").removeAttr("href");
    };

ここで例を見ることができます: http://stlredtails.com/construction/

編集:連絡先リンクは、「ul」の子、実用的な用語、サブメニューがないリンクです。

ありがとうございました!

4

3 に答える 3

2

if ステートメントは常に true を返し、次のコマンドは、一致したすべての要素から href 属性を削除します。一致するアンカーをループして、それぞれに対して if ステートメントを処理する必要があります。

jQuery(".navigation > ul > li > a").each( function() {
    if(jQuery(this).siblings("ul").length) {
        jQuery(this).removeAttr("href");
    }
});
于 2012-12-22T20:18:35.117 に答える
1

あなたが求めていることを理解しているかどうかは正確にはわかりませんが、jQuery:empty:parentセレクターが必要なようです。

次のようなものを試してください:

$(".navigation > ul:parent > li > a")

jQuery:空のドキュメント

jQuery :親ドキュメント

于 2012-12-22T20:13:48.770 に答える
1

jQuery 兄弟が機能しない?

それは働いています。それでも、何も一致しない場合でも常に jQuery ラッパーオブジェクトに評価され、その値は true であるため、if ブロックは常に実行されます。.length-property が not であることを確認します0

jQuery が親リスト アイテムのリンクを削除し、サブメニュー onClick を表示するように設定しました。

href属性を削除する理由はまったくありません。リンクをクリック (「アクティブ化」) してもリンクをたどらないようにするには、イベント ハンドラーでpreventDefault()イベント オブジェクトを呼び出します。click

于 2012-12-22T20:32:56.997 に答える