所以我可以把我想要的所有图像都放到一个数组中并将它们传递给$ image。但是,当我尝试循环遍历该数组时,它只会持续警告相同的项目3次。
我遇到问题的代码。
getItem : function($image){
console.log($image)
console.log(jQuery.type($image))
var setup ='<img src="' + $($image).attr('href') + '" title="' + $($image).attr('title') + '"/>';
$.each($image, function(i){
alert( setup);
});
}
HTML
<a href="images/slideshow/1-GW.PhillipBarnhart.ReverendMemory.jpg" title="Phillip Barnhart as:
Reverend Memory - a clergyman who stands for decorum and truth." rel="slideshow"><img src="images/view-slideshow.jpg" width="490" height="352" alt="View Slideshow"></a>
<a rel="slideshow" href="images/slideshow/2-GW.BethBrooks.POLLYTODD.jpg">fff</a>
<a rel="slideshow" href="images/slideshow/3-GW.NickHale.NOSTALGIA.jpg">test</a>
整个脚本或者如果你喜欢jsFiddle这里是一个链接。 http://jsfiddle.net/h3az4/
var slideShow = {
config : {
wrapper : 'body',
container : 'div',
anchor : 'a[rel="slideshow"]'
},
init : function(config) {
$.extend(slideShow.config, config);
$(slideShow.config.anchor).hide();
$(slideShow.config.wrapper).find(slideShow.config.anchor)
.eq(0)
.show()
.click(function(e){
e.preventDefault();
slideShow.getItem($(slideShow.config.anchor));
});
},
getItem : function($image){
console.log($image)
console.log(jQuery.type($image))
var setup ='<img src="' + $($image).attr('href') + '" title="' + $($image).attr('title') + '"/>';
$.each($image, function(i){
alert( setup);
});
},
createTumbnail : function($image){
}
};
$(document).ready(function() {
slideShow.init();
});
答案 0 :(得分:2)
我认为$image
是一个数组,因为你正在循环它。如果是这样的话,你想要类似的东西......
$.each($image, function(i){
var setup ='<img src="' + i.attr('href') + '" title="' + i.attr('title') + '"/>';
alert( setup);
});
答案 1 :(得分:2)
你使用$ .each循环错误。
你的第一个问题是,如果$ image是一个列表,$ image.attr(“x”)将得到列表中第一个元素的attr。你想要的是$($ image [i])或使用.get
第二个问题是在循环外声明var setup
。这意味着它声明和使用一次而不是3次(因为你有3个项目)。
$.each($image, function(i){
var setup ='<img src="' + $(this).attr('href') + '" title="' +
$(this).attr('title') + '"/>';
alert( setup);
});
当您在函数中使用$.each
this
对象时,将依次引用数组中的每个对象。在这种情况下,this
是一个DOM对象,因此您希望使用$(this)
来获取jQuery图像对象。
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以使用map()
(docs)完成您的目标。
getItem : function($image){
$image.map( function(i,val){
return $('<img src="' + this.href + '" title="' +this.title + '"/>')[0];
}).appendTo(slideShow.config.wrapper);
},
这将创建一个包含新<img>
元素的新jQuery对象,然后appendTo()
(docs) slideShow.config.wrapper
选择器。
无需中间setup
变量。
或者使用属性对象参数可能会更好一些:
getItem : function($image){
$image.map( function(i,val){
return $('<img>', { src:this.href, title:this.title })[0];
}).appendTo(slideShow.config.wrapper);
},