使用jQuery获取图像src

时间:2014-06-20 09:56:41

标签: javascript jquery html html5

我正在尝试获取html图片的src属性。看起来我可以在DOM中找到img元素,但src属性未定义,任何想法为什么?

HTML:

<table id="comboTable" style="width: 100%; height: 100%; margin-bottom: 10px;" data-bind="click: $root.selectCombo">
    <tr>
        <td>
            <img class="selector" src="~/Images/roundOffButton.png" style="position: absolute;margin-left: -57px; margin-top: -35px;" />
        </td>
        <td style="height: 35px;">
            <table style="width: 100%; background-color: #0097D8;padding:5px;">
                <tr style="padding:5px;">
                    <td style="height: 36px; padding-left: 14px; font-weight: bold;color: black; margin: 1px; width: 70%; text-align:left;">
                        <span data-bind="text: Description" style="padding-left: 5px;" />
                    </td>
                    <td style="width: 30%;padding:8px; text-align: center;color: white; background-color:black;">
                        <span data-bind="text: formatCurrency(Price)" style="font-size: 14px; white-space: nowrap;
                            font-weight: bold;" />
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>

使用Javascript:

var comboSpan = $("span:contains('" + description + "')");

var img = $(comboSpan).closest(".selector");

alert('Image object - ' + img);

var src = $(img).attr('src'); 

alert(src); //src is undefined

7 个答案:

答案 0 :(得分:1)

<强> Working Demo

  • 使用img的有效选择器,imgspan具有不同的父级,因此在这种情况下您无法直接使用closest()

  • 此外comboSpan,img已经是jQuery对象。您不需要$(comboSpan)

  • 使用.closest('#comboTable'),因为您的层次结构在表格中有一个表格。

    <table>
         <tr>
             <td>
                 <img>                      //You need this.
             </td>
    
             <td>
                 <table>
                       <tr>
                             <td>
                                  <span>    //You have this.
                             </td>
    
                       </tr>
                 </table>
             </td>
         </tr>
    </table>
    

最终代码:

var comboSpan = $("span:contains('" + description + "')");

var img = comboSpan.closest('#comboTable').find('.selector');    //Change this line

alert('Image object - ' + img);
var src = img.attr('src'); 
alert(src); //src is undefined

答案 1 :(得分:0)

您需要找到最接近的tr然后.selector img:

var comboSpan = $("span:contains('" + description + "')");

var img = $(comboSpan).closest("tr").find(".selector");// find tr and then img

alert('Image object - ' + img);

var src = $(img).attr('src'); 

alert(src); //src is undefined

答案 2 :(得分:0)

您首先尝试找到tr然后找到它的孩子img(即.selector

var img = $(comboSpan).closest('tr').find('.selector');

试试这个:

var comboSpan = $("span:contains('" + description + "')");
var img = $(comboSpan).closest('tr').find('.selector');
alert('Image object - ' + img);
var src = $(img).attr('src'); 
alert(src); 

答案 3 :(得分:0)

使用此:

var img = comboSpan.closest('tr').find('.selector');
// no need to wrap comboSpan with jquery as comboSpan is already a jquery object

答案 4 :(得分:0)

用此查看。

$('.img1 img').attr('src');

答案 5 :(得分:0)

只需使用如下:

var src = $('.selector').attr('src'); 

alert(src);

答案 6 :(得分:-1)

我的回答是爱的

$('.img1 img').attr('src');