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. 使用时必须使用10基数,parseInt()否则类似的数字08将被解释为八进制。
  5. 您需要确保它num实际上包含一个数字,或者parseInt()将返回NaN,这将破坏您的以下代码。
  6. 包含带有 jQ​​uery 对象的变量的前缀$。这是一个有用的约定。

尝试:

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 回答