2012-07-24 64 views
0

是否有這樣做的更好的辦法:jQuery的DOM的導航選擇父ATTR

partId = $(this).parent().parent().attr('data-partid') ; 

我有一些地方的行輸出到頁面上,每行包含輸入字段。

當用戶鍵入輸入字段時,它通過ajax保存輸入到數據庫。

爲了確保信息被保存到正確的行,我需要沿該行的ID,它存儲在div派:

<div id="buyingRow0" data-partid="43293">... 
+0

您可以張貼HTML部分? – undefined 2012-07-24 06:45:41

回答

1

一個清潔的方法是做這樣的事情:

partId = $(this).closest('div[data-partid]').data('partid'); 

但我不確定它是否更有效。它甚至可能會變慢。

0

您可以使用closest()

var partId = $(this).closest('div').attr('data-partid') ; 
0

如果你的目標div有一個ID(和你正在使用的ID屬性正確),這意味着它在頁面上唯一的一個。

$('#buyingRow0').data('partid'); 

似乎在這裏最有意義。

+0

嗨,ids是dyamically生成的,我不認爲有一種不同的方式來獲得該部分行的ID到建議從哪個輸入/選擇被改變的部分。 – imperium2335 2012-07-24 06:56:20

0

$(this).parent().parent()正好說明了兩個節點。如果您不想太依賴於DOM結構,那麼使用.closest()作爲其餘建議確實很好。

如果data-partid是您添加到很多標籤的通用屬性,那麼爲您所關注的行添加另一個布爾標識可能也不錯。 data-buying-row,因此您可以在該節點中使用其他標記data-partid

<div id="buyingRow0" data-partid="43293" data-buying-row> 
    ... 
</div> 

在這種情況下,你穿越到那個買行:

$(this).closest('div[data-buying-row]').data('partid');