Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使jQuery滑块适用于生成的ID?_Javascript_Php_Jquery_Carousel_Slideshow - Fatal编程技术网

Javascript 如何使jQuery滑块适用于生成的ID?

Javascript 如何使jQuery滑块适用于生成的ID?,javascript,php,jquery,carousel,slideshow,Javascript,Php,Jquery,Carousel,Slideshow,我已经创建了自动生成的ID,例如 gallary-item-0、gallery-item-1、gallery-item-1 等等。如何配置jQuery为每个id启动滑块。 这是我写的代码,但它只适用于第一个ID var i = 0; sleepTime = setInterval(function () { var id = $(this).attr("id"); $('#gallery-item-'+i).ionImageSlider({

我已经创建了自动生成的ID,例如

gallary-item-0、gallery-item-1、gallery-item-1

等等。如何配置
jQuery
为每个id启动滑块。 这是我写的代码,但它只适用于第一个ID

var i = 0;
sleepTime = setInterval(function () {
    var id = $(this).attr("id");           
    $('#gallery-item-'+i).ionImageSlider({
         slideWidth: 150,
         minSlides: 2,
         maxSlides: 10,
         moveSlides: 1,
         slideMargin: 50,
         pager: false
    });
    i++; 
    clearInterval(sleepTime);
}, 3000);
});

不要在调用它的地方调用
clearInterval(sleepTime)
,因为它只会触发一次,就像
setTimeout

创建一个变量,该变量包含id以
gallery item
开头的所有项目的计数,然后在达到计数时在处理程序中调用
clearInterval

var i = 0, 
total = $('[id^="gallery-item-"]').length,
sleepTime = setInterval(function () {
    $('#gallery-item-'+ i).ionImageSlider({
         slideWidth: 150,
         minSlides: 2,
         maxSlides: 10,
         moveSlides: 1,
         slideMargin: 50,
         pager: false
    });
    i++; 
    if (i == total - 1) {
        clearInterval(sleepTime);
    }     
}, 3000);

现在还不清楚您打算在3秒后全部显示计时器,还是在3秒后显示每个计时器

没有计时器:

for (var i=0;i<2;++i) {
    $('#gallery-item-'+i).ionImageSlider({
         slideWidth: 150,
         minSlides: 2,
         maxSlides: 10,
         moveSlides: 1,
         slideMargin: 50,
         pager: false
    });
}
使用多定时器:

for (var i=0;i<2;++i) {
    var loopI = i;
    setTimeout(function() {
        $('#gallery-item-'+loopI).ionImageSlider({
             slideWidth: 150,
             minSlides: 2,
             maxSlides: 10,
             moveSlides: 1,
             slideMargin: 50,
             pager: false
        });
    }, 3000 + (i+1));
}

for(变量i=0;最后一个
})不匹配。复制和粘贴时出现错误吗?我不知道ionImageSlider是如何工作的,但您可以尝试使用来实例化silder:
$('[id^=“gallery item-”).ionImageSlider()
Try
setTimeout
而不是setInterval/clearInterval,intervalIt只对第一个有效,因为你在第一个过程中清除了计时器,所以它永远不会被
i>0调用。非常感谢。第一个代码帮助很大。现在我有了和ID-s一样多的滑块,但图像来自不同的ID-s(div ID-s)如第一张幻灯片所示,即#gallery-item-0。下面的代码如何生成img结构:$('.gallery-item img')。每个(函数(){var src=$(this).attr(“src”);var bigSrc=src.replace(“-150x150”,”);$(this.wrap(“););问题可能是由闭包引起的。有关详细信息,请检查SO。此处的第三个代码将处理该问题。最有可能的是您的i var是global.p.s。该div还有一个类名为.gallery item。这是什么意思?
for (var i=0;i<2;++i) {
    var loopI = i;
    setTimeout(function() {
        $('#gallery-item-'+loopI).ionImageSlider({
             slideWidth: 150,
             minSlides: 2,
             maxSlides: 10,
             moveSlides: 1,
             slideMargin: 50,
             pager: false
        });
    }, 3000 + (i+1));
}