2010-11-11 122 views
0
<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> 

如何获得类的最接近的值获取点击类点击?寻找最接近的元素值jquery

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

这不工作,它返回空..

任何想法,为什么?

+0

你说“最接近”是什么意思? – zerkms 2010-11-11 04:55:11

+0

如果你看到我的html代码,有类“get”和“click”的多个实例,所以每当我按class“click”时,类“get”最接近类“get”的类应该显示值。 – SOer 2010-11-11 04:56:15

+0

'最接近'选择你最接近的匹配DOM祖先,那是你要做什么? http://api.jquery.com/closest/没有看得太紧密,我认为@zerkms可能与兄弟姐妹在正确的轨道 – 2010-11-11 04:59:37

回答

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

这里是工作示例:http://jsfiddle.net/rcXka/

+0

是的,你找不到最亲密的兄弟姐妹吗? – jcolebrand 2010-11-11 05:00:35

+0

@drachenstern:我打赌 - 没有。无论如何 - 这是一个在jsfiddle的工作示例;-) – zerkms 2010-11-11 05:02:29

+2

你太过动机了,我不能在这个晚上的这个时候暂停jsfiddle;) – jcolebrand 2010-11-11 05:03:40

2

在你表现出来,这应该做你想做的标记:

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

需要注意的是,如果有带班的get多个兄弟姐妹,这可能不会做你想要的。它将返回该类的第一个兄弟,而不是标记中的“最接近” - 如果将有多个兄弟姐妹.get s,则需要提出更严格的“最接近”定义。

此外,

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

是一个毫无意义的声明。这意味着“为匹配元素集合中的每个元素执行一次该函数”,但匹配元素集合中只有一个元素,即$(this)。你可以用匿名函数的内容替换它。

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

+0

zerkms在你提前一小时给了这段代码 – 2010-11-11 07:01:22

+0

@Dan - 不确定在那里你有这个想法 - zerkms张贴,当我打字时,大约2分钟前。尽管感谢downvote。 – 2010-11-11 13:17:02

+0

对他说“2个小时前回答”,对你说“1小时前回答” – 2010-11-11 21:24:09