2010-11-11 222 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