在div中获取最接近的img src

时间:2014-08-26 18:38:05

标签: javascript jquery html

我需要在最近的 div中使用类名“asd”获取图像的src,但我一直得到“undefined”返回。这是我的代码:

HTML

<div class="asd">
     <img src="https://www.google.com/images/srpr/logo11w.png" alt="test">
</div>
<button type="button" onclick="show()" >test</button>

的Javascript

 function show(){
     var url = jQuery(this).closest('.asd').find("img").attr("src");  
     alert(url);
  }

这有效:$('.asd').find('img').attr('src');但不是我需要的。我需要它是最接近的div。我做错了什么?

5 个答案:

答案 0 :(得分:0)

那么这个选择器呢

$('.asd > img').attr('src');

...

jQuery子选择器的文档:http://api.jquery.com/child-selector/

答案 1 :(得分:0)

prev()可以解决问题:

jQuery("#btn").click(function(){
     var url = jQuery(this).prev('.asd').find("img").attr("src");
     alert(url);
});

小提琴:http://jsfiddle.net/uvxosp7e/

答案 2 :(得分:0)

查看jQuery的nextprev选择器。我认为这就是你要找的东西。

基本上,它们分别得到匹配元素集中每个元素的紧随其后的兄弟。

答案 3 :(得分:0)

这是指窗口对象,需要传递一个引用:

<button type="button" onclick="show(this)" >test</button>

然后,你可以这样做:( closest在dom树中旅行,而不是它的兄弟姐妹)

function show(button){
     var url = jQuery(button).prev('.asd').find("img").attr("src");  
     console.log(url);
  }

答案 4 :(得分:0)

一种解决方案是将this作为参数传递:

<button type="button" onclick="show(this)" >test</button>

并在 js

window.show = function(obj){
    var url = $(obj).prev().children("img").attr("src");
}

fiddle using prev

如果您想使用closest,则必须将html结构更改为以下内容:

<div class="asd">
    <img src="https://www.google.com/images/srpr/logo11w.png" alt="test" />
    <button type="button" onclick="show(this)" >test</button>
</div>

<强> JS

window.show = function(obj){
    var url = $(obj).closest(".asd").children("img").attr("src");
}

fiddle using closest

<强>参考

this指的是DOM元素。

.prev()

.closest()