jQuery - 无法识别的表达式:li:nth-​​child?

时间:2012-07-24 08:07:22

标签: jquery css-selectors

(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”

Althoung我在此脚本之前链接了jQuery源,

感谢anwsers

1 个答案:

答案 0 :(得分:3)

  1. 您可以使用.data("foo")支持.attr("data-foo")
  2. 您可以使用the :eq() selector。这是基于零的,这是你似乎想要的。
  3. 您无需在单独的一行上致电.addClass()
  4. 当您使用10必须使用基数parseInt(),或者08之类的数字将被解释为八进制。
  5. 您需要确保num实际上包含一个数字,或parseInt()将返回NaN,这将破坏您的以下代码。
  6. 包含带$的jQuery对象的前缀变量。这是一个有用的约定。
  7. 尝试:

    var num = parseInt($('body').data("site"), 10),
        $theul = $(".submenu li:eq(" + num + ") a").addClass('activex'),
        $theNewUl = $(".submenu li:eq(" + (num-1) + ") a").addClass('lastsl');