目前我为我的应用中的每张图片加载默认图片。如果我点击div 5的任何图片,我想加载div 5中所有图像的真实图片。目前我使用img标签的onclick事件:
switchImg(this, "LINK_FOR_PICTURE")
my js snippet:
function switchImg(img, url){
$(img).attr("src", url);
}
目前它只加载我点击的图片。
此处为HTML代码段:
<div id="1">
</div>
<div id="2">
</div>
..
<div id="5">
<img src="DEFAULT_IMG" onclick="switchImg(this, "LINK_FOR_PICTURE_1")" alt="No_picture">
</div>
<img src="DEFAULT_IMG" onclick="switchImg(this, "LINK_FOR_PICTURE_2")" alt="No_picture">
</div>
<img src="DEFAULT_IMG" onclick="switchImg(this, "LINK_FOR_PICTURE_3")" alt="No_picture">
</div>
.....
</div>
如何在以下条件为真的情况下更改我的代码:
请注意,img链接会针对每张图片进行更改。
答案 0 :(得分:0)
这样做:
HTML
<div id="5">
<img src="DEFAULT_IMG" data-fullImg="link_for_picture1" alt="No_picture">
<img src="DEFAULT_IMG" data-fullImg="link_for_picture1" alt="No_picture">
<img src="DEFAULT_IMG" data-fullImg="link_for_picture1" alt="No_picture">
</div>
JS function switchImg(img){ img.attr(“src”,img.data('fullImg')); }
$(function(){
var allImages = $('#5 img');
allImages.click(function(){
allImages.each(function(){
switchImg($(this));
});
});
});
HTML更改
img
标记都包含在#5
中,不是吗?因为您当前的HTML标记无效。JS更改
allImages.click()
将内部代码绑定到任何图片上的click事件。.each()
函数遍历所有这些图像,将自身作为jquery对象传递给switchImg函数。data-fullImg
属性。如果在1.6之前使用jQuery版本(或类似的东西),那么使用.data()
方法的方法将无法正常工作。您需要使用.attr('data-fullImg')
。修改强>
回应OP对此帖的评论:
$(function(){
$('img.showOriginal').click(function(){
$(this).parent().children().each(function(){
switchImg($(this));
});
});
});
此代码假定您将类“showOriginal”放在每个img
标记上,因为我怀疑您确实希望将此功能应用于页面上的每个img
标记。除此之外,我们还有这一部分:$(this).parent().children()
。这只是遍历DOM到父元素(#5,#2,无论如何),然后返回到所有子元素(您想要更改的图像)。
答案 1 :(得分:0)
通过使用此方法调用switchImg(this,“LINK_FOR_PICTURE_3”),“this” 仅代表点击的图片。你需要像
这样的东西function switchImg(img){
$(img).closest('div').find('img').each(function(){
$(this).attr("src", $(this).attr('imglink'));
});
}
使用html
<img src="DEFAULT_IMG" onclick="switchImg(this);" imglink="LINK_FOR_PICTURE_3" alt="No_picture">
答案 2 :(得分:0)
利用jQuery和事件委托,观察何时单击div然后找到该div中的所有图像并触发src更改。为了更好地解释这一点,我很快就把一个关于JSFiddle的例子放在一起
http://jsfiddle.net/Phunky/EnhUE/
在我的示例中,您可以单独单击图像,也可以单击所有的div。