我需要将此div中的图像属性添加到JS数组并使用这些图像运行Supersized:
<div id="dgaslides">
<img src="img/temp/topimg01.jpg" title="Image 1">
<img src="img/temp/topimg02.jpg" title="Image 2">
<img src="img/temp/topimg03.jpg" title="Image 3">
</div>
我的JS:
jQuery(function($){
var img_length = $('#dgaslides img').length-1;
var dgaslides = [];
$('#dgaslides img').each( function(i){
var src = $(this).attr('src');
var title = $(this).attr('title');
dgaslides.push("{image : '" + src + "', title : '" + title + "'}");
if(img_length == i){
$.supersized({
// Functionality
slide_interval : 3000, // Length between transitions
transition : 1, // 0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left
transition_speed : 700, // Speed of transition
horizontal_center : 1, // Centers image horizontally. When turned off, the images resize/display from the left of the page.
// Components
slide_links : 'blank', // Individual links for each slide (Options: false, 'num', 'name', 'blank')
slides : dgaslides
});
}
}); });
它确实有效,因为我在输出中获得3个图像,但链接(src)是“Undefined”,标题也不存在?
硬编码的正确方法是:
var dgaslides = [ // Slideshow Images
{image : 'img/temp/topimg01.jpg', title : 'Reception'},
{image : 'img/temp/topimg02.jpg', title : 'Reception 2 og noget mere tekst her'},
{image : 'img/temp/topimg03.jpg', title : 'Reception 3'}
];
任何人都可以帮我弄清楚我做错了吗?
答案 0 :(得分:0)
我认为你需要传递一个对象数组而不是一个字符串数组。
dgaslides.push({image : src, title : title });
答案 1 :(得分:0)
您将字符串保存到数组而不是对象。
这是一个JSFiddle,其代码的修改版本(没有超大功能)按预期工作:http://jsfiddle.net/SBuXF/
主要变化:dgaslides.push({image : src, title : title});
我已将生成的数组输出到控制台,然后是您的硬编码 - 它们是相同的。
编辑:您的硬编码标题与HTML不匹配,因此两个数组的内容略有不同,但它们的格式都正确。这里有一个纠正的小提琴:http://jsfiddle.net/SBuXF/1/
答案 2 :(得分:0)
您可以使用jQuery的map方法来简化任务。以下是代码。
jQuery(function ($) {
var dgaslides = $('#dgaslides img').map(function () {
return {
image: $(this).attr('src'),
title: $(this).attr('title')
};
});
$.supersized({
slide_interval: 3000,
transition: 1,
transition_speed: 700,
horizontal_center: 1,
slide_links: 'blank',
slides: dgaslides
});
});
希望这有帮助。