查找最接近的元素值jquery

时间:2010-11-11 04:52:37

标签: javascript jquery html

<table>
    <tr><td>
        <div><img src="1.jpg">text<span class="get">aa</span> <span class="click">Get value</span></div></div></td></tr>
    <tr><td>
        <div><img src="2.jpg">text<span class="get">bb</span> <span class="click">Get value</span></div></td></tr>
    <tr><td><div><img src="1.jpg">text<span class="get">cc</span> <span class="click">Get value</span></div></div>
        </td></tr>
</table>

如果点击课程点击,我如何获得最接近的课程值?

$('.click').click(function() {
    $(this).each(function() {
        $('#sample').text($(document).closest('div').find('.get').text());
    });
});

这不起作用,它返回空..

知道为什么吗?

2 个答案:

答案 0 :(得分:3)

$('.click').click(function() {
  $('#sample').text($(this).siblings('.get').text());
});

以下是工作示例:http://jsfiddle.net/rcXka/

答案 1 :(得分:2)

在你演示的标记中,这应该做你想要的:

$('.click').click(function() {
    $('#sample').text($(this).siblings('.get').text());
});

请注意,如果有多个同级get的兄弟姐妹,这可能无法达到您想要的效果。它会让第一个兄弟回到那个班级,而不是最近的&#34;#34;在标记中 - 你需要提出更严格的定义&#34;最接近&#34;如果有多个兄弟姐妹.get s。

此外,

$(this).each(function(){ ... });

是一个毫无意义的陈述。这意味着&#34;对匹配元素集合中的每个元素执行一次该函数&#34;,但是匹配元素集合中只有一个元素,即$(this)。您可以仅使用匿名函数的内容替换它。

.closest()函数返回与特定选择器匹配的第一个元素。因此,致电$(document).closet() - document没有父母是没有意义的。