2011-08-25 27 views
1

對象的選擇孩子們,我有這個功能,我使用打開一個模式對話框,我需要從「dblclicked」節點的一些信息來填充:在HTML的與jQuery

$(function(){ 
    $(".delete").live('dblclick', function() { 
     var id = $(this).attr('id'); 
     $('#delID').val(id); 
     var txt = this.parentNode.children[2].innerHTML; 
     $("#details").html(txt); 
     $("#delAssign").dialog('open'); 
    }); 
}); 

例:

<tr> 
    <td class='delete'></td> 
    <td></td> 
    ... 
    <td></td> 
</tr> 
<tr> 
... 
</tr> 

現在我正在使用純javaScript獲得

var txt = ...

問題是「我如何使用jQuery實現var txt的相同結果?」

+0

請提供關聯的html –

回答

3

您可以將其更改爲:

var txt = $(this).siblings(":eq(2)").html(); 

我認爲這是最快的解決方案。

+0

+1,不知道「兄弟姐妹」。 – Kokos

+1

帶'eq'的兄弟姐妹不會總是工作,因爲不包括'this'。如果'this'出現在開頭,這可能會導致索引。你需要使用':nth-​​child(2)'代替。 – Dennis

+0

jQuery很好地處理它的$(this)對象。它將始終在$(「。delete」)中找到的DOM對象上工作。無論如何,你錯了:nth-​​child :)。第n個孩子從1開始計數,從0開始計數:所以如果你想使用:nth-​​child,那麼索引應該是3. – avall

2

像這樣:

var txt = $(this).parent().children().eq(2).html(); 

.parent()選擇的父元素。

.children()選擇兒童

.eq(2)選擇孩子們在用指數2元素

.html()獲取此元素的html內容

編輯:children(':eq(2)')children().eq(2)感謝改爲費利克斯·克林

+0

你有錯誤的語法 - :eq僞類使用()而不是[] – avall

+0

謝謝,但我已經改變它:) – Kokos

+0

啊好吧。我只看了你的傳奇:) – avall

0
var txt = $(this).siblings().eq(2).html(); 

使用eq()作爲一種方法,而不是通過它作爲選擇器更快。

無論如何,既然你已經有了JavaScript的解決方案,爲什麼你要減慢使用jQuery的東西?