2012-08-30 38 views
0

使用data()功能我兩個值加一些divs$oRow點的div)DIV其中有具體的數據(JQuery。發現)與其關聯

$oRow.data("more", {moreValue: 750, moreIndex: 4}); 

後來我試圖找到div(有隻有一個),這對於moreIndex

我做它像這樣一個特定的值:

$oMore = $(".meter_battery_row").filter(function(){ 
        return $.data(this, "more").moreIndex == 4; 
        }); 

但它似乎並沒有工作。在上面的行後我顯示window.alert($oMore),但它似乎沒有到達這條線,所以它在過濾器函數中運行某種問題。

任何人有任何想法?

EDIT

.meter_battery_rowdivs類,其附上的數據值。 ($oRow.meter_battery_row類)

+0

它正常工作與我http://jsfiddle.net/Calou/Qjyhz/ – Calvein

回答

1

您可以將其添加數據 - 屬性,這樣你就可以更容易後,檢索和仍然使用$.fn.data()

$oRow.attr('data-moreIndex', 4).attr('data-moreValue', 750); 
// ... 
$oMore = $('.meter_battery_row[data-moreIndex="4"]'); 

這裏是a live example

1
$('div.meter_battery_row[data-moreIndex="4"]') does not help you ? 

正常的.data()功能添加的自定義價值,你的DIV作爲data-...前綴屬性。

您可以使用attribute selectors來獲得您指定的div。

檢查你試圖用螢火蟲選擇的元素,你會看到你的moreIndex被保存爲div元素的一個屬性。

+1

'$ .fn.data'實際上並沒有添加數據smthng屬性,你必須使用'$ .fn.attr'。 – Calvein

1

首先檢查$.data(this, "more")

return ($.data(this, "more") && $.data(this, "more").moreIndex == 4); 

否則,當不是所有的元素有更多的數據,以及過濾結束,您將收到一個錯誤。

1

問題是,當您撥打$.data(this, "more")時,只有一個元素會返回對象{moreValue: 750, moreIndex: 4},其餘的將返回undefined。那麼當您撥打undefined.moreIndex時,您將收到錯誤消息。試着這樣做:

return $.data(this, "more") && $.data(this, "more").moreIndex == 4;