我正在修改一个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)。
非常感谢任何建议!
答案 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);