【问题标题】:jQuery console logging image source not working $(this).find('img').attr('src');jQuery 控制台记录图像源不工作 $(this).find('img').attr('src');
【发布时间】:2014-06-08 19:11:32
【问题描述】:

我正在尝试使用 $(this).find('img').attr('src'); 对图像源进行控制台日志记录;

这是我的 HTML

<div id="container">
    <div id="stage">
        <div id="gallery">
            <img class="photo" src="_images/image#1" />
            <img class="photo" src="_images/image#2" />
            <img class="photo" src="_images/image#3" />
            <img class="photo" src="_images/image#4" />                 
        </div>
    </div>
</div>

这是我的 JS

function grabIt(){
  var thisImageSrc = $(this).find('img').attr('src');
}

console.log(thisImageSrc)

$('#gallery img').mouseover(grabIt);

我将在一个更大的函数中使用 img 源,这超出了这个问题的范围。我的目标是在将鼠标悬停在图像上时抓取图像源。

我是 jQuery 新手,如果可能的话,我更容易理解答案代码的长形式,而不是嵌套在函数内部的函数。

谢谢!

【问题讨论】:

    标签: jquery html find


    【解决方案1】:

    console.log 语句放入函数中。 thisImageSrcgrabIt 之外不存在,并且 console.loggrabIt 被执行之前被调用。

    此外,由于您将事件处理程序绑定到图像本身,$(this).find('img') 将返回一个空集。一个图像不能包含另一个图像。访问元素本身的src 属性。

    所以,解决这两个问题,你最终会得到

    function grabIt(){
      var thisImageSrc = this.src;
      console.log(thisImageSrc)
    }
    
    $('#gallery img').mouseover(grabIt);
    

    【讨论】:

    • 谢谢。虽然这确实有效,但 $(this).find('img').attr('src') 是一种更长的写法吗?
    • 没有。正如我所说,this 指的是img 元素。 $(this).find('img') 会尝试在img 元素inside 中找到img 元素。但由于这是不可能的,它会返回一个空集。查看api.jquery.com/find 了解更多关于.findlearn.jquery.com/events/event-basics 事件处理的信息。
    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2012-08-28
    相关资源
    最近更新 更多