使用jquery将图像的src更改为单击的图像的src

时间:2014-05-28 21:27:33

标签: jquery html src

我之前曾经问过这个问题,尽管理论上问题已经解决,但它仍然无法在我的实际网站中使用。

原始问题的详情: Replace a featured image's src with the src of the image clicked on

Jquery我正在使用:

$(".galleryimg").click(function(){
    var r1 = $(this).attr("src");
    $('#featured-image').attr("src", r1);
    });

此代码应该在其上运行的网站上的页面: http://www.hoosiergames.org/textquest.html

我目前正在使用这个jquery代码内联在此页面的标题和链接的外部jquery文件中。似乎都没有做到这一点,尽管事实上我还链接了最新的jquery库页面和页面上的其他jquery工作得很好。

我们三个人已经看过这个但仍然没有找到问题。这里希望别人能发现它。

在此先感谢您的帮助,在这个上撕下我的头发。

4 个答案:

答案 0 :(得分:2)

您需要将上面的jQuery代码包装在:

$(document).ready(function(){
  // your code
});

这将确保在绘制文档标记后运行。

答案 1 :(得分:0)

(function() {
    $(function() { // Document Ready
        var $featuredImage;

        $('.galleryimg').click(function() {
            $featuredImage = $featuredImage || $('#featured-image');

            $featuredImage.prop('src', this.src);
        });
    });
}());

这里的概念是首先确保我们的所有代码都在自己的范围内运行,而不是污染全局对象(窗口)。 然后我们需要确保文档准备就绪,以便图库图像可以实际绑定到它的点击事件,否则点击甚至不会被绑定。

点击图库图片后,我们会找到精选图片,但如果已经找到则不会找到;这将加速计算,因为研究DOM(所有元素)可能很慢。 然后我们得到点击图像的src(通过prop而不是attr - 弃用),然后将特色图像的src更新为它。

不需要将gallery图像元素包装在jQuery对象中(因为它需要时间),因为我们只是从它中检索src属性,这很容易犯罪。

关键问题 虽然我可能已经改变很多,但纯粹是为了清理和进一步学习。原始代码的核心问题是,当您通过jQuery $('find me!!!)进行DOM搜索时,它必须已经在页面中。由于您的代码位于HEAD中,因此您的页面已设置为呈现您要查找的元素。通过添加jQuery的DOM Ready函数,一旦页面包含所有元素(在原始请求中发送),它就会运行代码。

答案 2 :(得分:0)

你肯定可以像@ tony.leo所指出的那样使用DOM,等到DOM全部设置好才能激活你的代码。如果仅在包含图形(图像)的整个页面已满载时触发此代码非常重要,那么您将使用$(window).load(fn),如下所示:

$(window).load(function() {
    $(".galleryimg").click(function(){
        var r1 = $(this).attr("src");
        $('#featured-image').attr("src", r1);
    });
});

答案 3 :(得分:0)

首先,尝试将你的jquery放在身体标签之后。您可以在头部包含.js文件本身,但是在主体标记之后将脚本放在标记之间。

通过这种方式,浏览器将加载文档正文并识别图像。

并且,以防万一,将document.ready函数包装在您的代码周围:

$(document).ready(function(){
  $(".galleryimg").click(function(){
    var r1 = $(this).attr("src");
    $('#featured-image').attr("src", r1);
    });
});
祝你好运!