0
(function (){

    var num = parseInt($('body').attr('data-site')) + 1,
        theul = $(".submenu li:nth-child(" + num + ") a"),
        newNum = num - 1,
        theNewUl = $(".submenu li:nth-child(" + newNum + ") a");

        console.log(theul);
        theul.addClass('activex');
        console.log(theNewUl);
        theNewUl.addClass('lastsl');

})();

こんにちは、このスクリプト コンソールを実行しようとすると、次のように表示されます。

「キャッチされない構文エラー、認識できない式: li:nth-child」

このスクリプトの前にjQueryソースをリンクしましたが、

答えてくれてありがとう

4

1 に答える 1

3
  1. .data("foo")に有利に使用できます.attr("data-foo")
  2. セレクターを使用できます:eq()。それはあなたが望んでいるように見えるゼロベースです。
  3. .addClass()別の回線で呼び出す必要はありません。
  4. を使用するときは基数を使用する必要があります。そうしないと、次のような数値は 8 進数として解釈されます。10parseInt()08
  5. numに実際に数値が含まれていることを確認する必要があります。そうでない場合parseInt()は戻りNaN、次のコードが壊れます。
  6. jQuery オブジェクトを含む変数には、プレフィックスとして$. 従うと便利な規則です。

試す:

var num = parseInt($('body').data("site"), 10),
    $theul = $(".submenu li:eq(" + num + ") a").addClass('activex'),
    $theNewUl = $(".submenu li:eq(" + (num-1) + ") a").addClass('lastsl');
于 2012-07-24T08:18:31.523 に答える