jQuery选择返回undefined

时间:2014-09-04 17:52:22

标签: javascript jquery jquery-selectors this attr

我不确定为什么会发生这种情况,我列出了代码工作的两种方式,而另一种方法则没有。 如果这是可能的话,我希望得到每个内部的值,如果这是可能的,那么我可以改变该值,但我可以从外面选择它们为所有IMG做一个,这使我放松了与之相关的TD的参考IMG。

http://jsfiddle.net/4w8030th/1/

// Cannot retrieve SRC inside IMG tag
$.each($('tr.infraTrClara'), function () {
    // Post-It
    var postit = $(this).children('td:nth-child(2)').select('img');
    postit_src = $(postit).attr('src');
    alert(postit_src);
});

// Can retrieve SRC inside IMG tag
$.each($('tr.infraTrClara td:nth-child(2) img'), function () {
    // Post-It
    var postit = $(this).attr('src');
    alert(postit);
});

2 个答案:

答案 0 :(得分:3)

.select()是一种事件侦听器绑定方法,类似于.click()。您可能希望.children()在那里实现相同的行为。

答案 1 :(得分:2)

此案例的合适方法是.find(),而不是.children().select()

然后,由于它将是一个多重结果,而不是将其设置为变量,也可以对其执行.each()

http://jsfiddle.net/4w8030th/3/

$.each($('tr.infraTrClara'), function () {
    // Post-It
    $(this).find('td:nth-child(2)').find('img').each(function() {
        postit_src = $(this).attr('src');
        alert(postit_src);
    });
});

修改

凯文在评论中提出了一个很好的观点。我假设您需要一个不同于您发布的第二个代码(正在运行)的解决方案,原因是另一个原因......

但是,你提到过你不想

  

丢失与该IMG关联的道明的参考资料。

因此,如果您只想操纵td,请使用您的第二个代码并使用parent()调用它:

$.each($('tr.infraTrClara td:nth-child(2) img'), function () {
    // Post-It
    var postit = $(this).attr('src');
    alert(postit);

    var td = $(this).parent(); //HERE!!!
});