Onclick(this)选择第一个元素,而不是当前元素

时间:2012-07-16 03:08:29

标签: javascript jquery this

所以,我有一个像这样的图像列表..

<ul class="image-list">
    <li class="image-icon"><a onclick="showImg(this)"><img src="/gallery/latest/1.jpg"/></a></li>
    <li class="image-icon"><a onclick="showImg(this)"><img src="/gallery/latest/2.jpg"/></a></li>
    <li class="image-icon"><a onclick="showImg(this)"><img src="/gallery/latest/3.jpg"/></a></li>
    <li class="image-icon"><a onclick="showImg(this)"><img src="/gallery/latest/4.jpg"/></a></li>
    <li class="image-icon"><a onclick="showImg(this)"><img src="/gallery/latest/5.jpg"/></a></li>
</ul>

showImg()...

function showImg(img) {
    document.getElementById("photo").innerHTML = "<img src='"+$(img+" img").attr("src")+"'/>";
    $("#photo").slideDown(500);
}

函数showImg()获取src的{​​{1}} attr并将图像放入另一个div中。问题是,this > img只选择第一个图像src。有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

使用this作为上下文,而不是上下文选择器。

$("img", img).attr("src")

此外,您可以简化代码:

$("#photo").html('<img src="'+$("img", img).attr("src")+'" />').slideDown(500);

FabrícioMatté进一步简化:

$('#photo').html($('img', img).clone()).hide().slideDown(500);

答案 1 :(得分:1)

您正在将this [HTMLAnchorElement]传递给jQuery

img+" img"可能会给你[HTMLAnchorElement] img

你想要的是

$("img", img)