0

次の HTML コードがあり、jquery を使用して HTML リスト ( id="seconde") から id 属性を取得します。

     <div id="navigation">
<ul    class=" sf-menu sf-vertical " >
            <li >

                <a href="#">Pollo</a>
                <ul>
                    <li>
                        <a href="#">Prime lavorazioni</a>

                    </li>
                    <li id = "seconde">
                        <a href="#">Seconde lavorazioni</a>

                    </li>
                    <li>
                        <a href="#">Terze lavorazioni</a>

                    </li>

                </ul>
            </li>



        </ul>
        </div>

これは私の.jsです:

    $("ul.sf-menu li ").click(function(){

          var oID = $(this).attr("id");
          alert(oID);
        });

しかし、うまくいきません。何か案が?ありがとう

4

4 に答える 4

0

イベント ハンドラーは内側の li タグにのみアタッチする必要があります (一部の li タグには「id」属性がないため、oID 変数が定義されていることを確認してください)。

$("ul.sf-menu ul li ").click(function()
{
  var oID = $(this).attr("id");
  if ( oID )
    alert(oID);
});
于 2012-11-11T16:49:35.800 に答える
0

問題は、リストがネストされていることです。ul.sf-menu > li > ul > li の DOM ツリーがあります。

したがって、リスト項目をクリックすると、2 つのリスト項目がクリックされたため、実際にはコールバックが 2 回発生します。

コードを次のように変更すると、ul の子であるリスト アイテムのみが一致するようになります。

$("ul.sf-menu ul > li ").click(function(){

      var oID = $(this).attr("id");
      alert(oID);
});

または、li-items から id を削除して、リンク自体に追加することもできます。

于 2012-11-11T16:51:49.760 に答える
0
$("ul.sf-menu ul li ").click(function(){
    var oID = $(this).attr("id");

    if(typeof oID != 'undefined'){
        alert(oID);
    }
});​

ターゲット(DOMツリー)LIを見つけて、未定義の検証も行います

http://jsfiddle.net/sameerast/8YwVj/

于 2012-11-11T16:52:47.263 に答える
0

リスト項目をクリックすると、2 つのリスト項目がクリックされたため、実際にはコールバックが 2 回発生します。2 番目の LI 項目でのみ id を指定しました。すべての LI 要素に ID を付けて、以下のコードを試してください。

ul.sf-menu > li > ul > li の DOM ツリーがあります。

使用できます

$("ul.sf-menu ul > li ").click(関数(){

  var oID = $(this).attr("id");
  alert(oID);

});

于 2012-11-12T05:58:51.170 に答える