使用php循环在一个页面上创建多个图像滑块


Multiple Image Sliders on one page created with php loop

我使用wordpress循环浏览我的帖子,并从每个帖子返回5张图片。然后我将这5张图片加载到一个滑块中。我循环浏览10个页面,在一个页面上总共返回10个滑块。网站管理员可能会创建无限数量的帖子(公文包项目),产生无限数量的滑块(每页10个,带分页)。

许多jquery滑块插件允许在一个页面上使用多个滑块,但它们都要求您使用唯一的选择器来调用它们。例如,前5个滑块的名称如下:

 $("#portfolio-slider-1").bxSlider();
 $("#portfolio-slider-2").bxSlider();
 $("#portfolio-slider-3").bxSlider();
 $("#portfolio-slider-4").bxSlider();
 $("#portfolio-slider-5").bxSlider();

如果我有300个滑块,就会有300个调用。。。现在看来,这不是没有必要吗?特别是wordpress有一个通用的页眉/页脚.php,它会在每一页上进行这些调用(即使是没有这些滑块容器的页面)。完全没有必要。

另一个问题是给wordpress动态生成的帖子(公文包项目)分配一个唯一的id。因为wordpress在帖子中循环,它不能给每个帖子一个div id,依次是1、2、3,依此类推。wordpress会给每个帖子分配一个.portfolio-slider类,这在jquery滑块插件中是不起作用的。

这似乎不对。但话说回来,我想不出一个好的解决方案,可以在一个页面上使用多个滑块,并使用一个通用类名。我试过很多插件,但都不起作用。它们都需要唯一的ID!所以我想我的问题是,如何在一个页面上添加许多图像滑块,以便动态生成项目(必须是类名,而不是ID)?

您应该能够使用以下内容压缩您的多个.bxSlider()调用:

$('[id^="portfolio-slider-"]').each(function(){
    $(this).bxSlider();
});

这基本上转化为:对于每个id以"投资组合滑块"开头的元素,调用其上的.bxSlider()。

要使用.portfolio滑块类,并将.bxSlider()分别应用于每个滑块:

$('.portfolio-slider').each(function(){
    $(this).bxSlider();
});

这里的关键是使用each,因此该函数单独应用于每个元素,而不是所有元素的集合。