2012-10-13 41 views
0

我有以下標記:如何在這個例子來訪問外部的選擇

<div class='header-vals' data-item-id='23'> 
    <input type='text' name='some-input' /> 
    <input type='text' name='some-other-input' /> 
</div> 

,想OT像這樣的東西訪問數據項-ID(但不工作):

$('.header-vals').on('keyup','input',function(){ 
    var item_id=$(this).data('item-id'); 
}); 

有沒有一種方法,使這種引用外,使我能得到的數據項-ID?

THX提前

+1

我認爲你正在尋找的[屬性](http://api.jquery.com/attr/)功能 - 例如'$(本).attr( '數據項ID')'。 – jedwards

+2

在事件處理器中,'this'指輸入元件,其不具有'數據項-id'屬性。 –

回答

2

做到這一點的方法: -

$('.header-vals').on('keyup','input',function(){ 
    alert($(this).parent().attr('data-item-id')); 
});​ 

參考LIVE DEMO

+0

'.data()'工作正常......無論如何,+1提供了一個工作解決方案。 –

+0

thx - 這些似乎都起作用 – timpone

1
var item_id = $(this).parent().attr('data-item-id'); 
+0

THX - 行之有效 – timpone

1

Felix是正確的(和感謝好友)..

$(這)是指輸入...看看下面的代碼,只需添加父:

你的代碼將工作,只需切換數據使用attr用於

$('.header-vals').on('keyup','input',function(){ 
    var item_id=$(this).parent.attr('data-item-id'); 
}); 

的。數據()函數f或者將數據綁定到一個元素,而不是選擇屬性 http://api.jquery.com/jQuery.data/

+0

jQuery的自動添加'數據'屬性的內部'.data'存儲。這相當於OP代碼。問題在於input元素沒有'data-item-id'屬性。 –

+0

thx - 運行良好 – timpone

1

試試這個:

$('.header-vals').on('keyup','input',function(){ 
    var item_id=$(this).parent().attr('data-item-id'); 
}); 

OR

$('.header-vals').on('keyup','input',function(){ 
    var item_id=$(this).parent().data('item-id'); 
}); 

這裏是一個demo使用所述數據的功能。

+1

jQuery自動將'data-'屬性添加到內部'.data'存儲。這相當於OP代碼。問題在於input元素沒有'data-item-id'屬性。 –

+0

您的權利,調整了我的代碼。謝謝。 – fanfavorite

+0

thx - 運作良好 – timpone

相關問題