JQuery语法错误之谜

时间:2016-04-13 12:41:27

标签: javascript jquery

我正在修改一个JQuery脚本,以淡化div中的元素(在循环中)。

这是脚本的一部分:

    var fadeDuration = 2000;
    var displayTime = 4000;
    var currentIndex = 1;
    var nextIndex = 1;
    $(document).ready(function () {
        $('ul.slideshow li').css({opacity: 0.0});
        $("'ul.slideshow li:nth-child(" + nextIndex + ")'").addClass('show').animate({opacity: 1.0}, fadeDuration);
        var timer = setInterval("nextSlide()", displayTime);
    });

如果我使用JQuery 1.5,这没有问题,但是如果我使用JQuery 1.12.0或JQuery 2.2它会失败,给我这个错误:

“无法在'元素'上执行'querySelectorAll':'*,:x'不是有效的选择器。”

它在函数的第二行失败:

$("'ul.slideshow li:nth-child(" + nextIndex + ")'").addClass('show').animate({opacity: 1.0}, fadeDuration);

我是JQuery的新手,我正在使用它作为学习练习,但我很困惑,不知道如何开始调试问题(假设它适用于JQuery 1.5)。

非常感谢任何建议!

2 个答案:

答案 0 :(得分:5)

此:

"'ul.slideshow li:nth-child(" + nextIndex + ")'"

会给你一些类似的东西:

"'ul.slideshow li:nth-child(1)'"

当你需要类似的东西时:

"ul.slideshow li:nth-child(1)"

不要在选择器中放置撇号。

答案 1 :(得分:1)

此行中有额外的引号:

$("'ul.slideshow li:nth-child(" + nextIndex + 
")'").addClass('show').animate({opacity: 1.0}, fadeDuration);

尝试

$("ul.slideshow li:nth-child(" + nextIndex + 
")").addClass('show').animate({opacity: 1.0}, fadeDuration);