2013-06-19 16 views
2

我有一個使用數據屬性中數組的HTML元素有沒有一種方法可以根據單個值在html元素的多個數據屬性中搜索數組?

<div data-area='["North America", "United Kingdom"]'>Test</div> 

我有屬於多個數據屬性不同的「東西」

<div data-area='["North America", "United Kingdom"]' data-job='["Programmer","Scientist"]'>test</div> 

我如何去通過所有的搜索數據基於1值的整個元素上的屬性標記?

我試圖用一個選擇,而不是循環通過每個數據屬性,這可能嗎?

下面是一個例子加什麼,我已經嘗試小提琴。

// search all data attributes of a div element that contains the given value and apply a hidden class 
// this should search every data attribute for "Programmer" 
$('[data-*="Programmer"]').addClass('hidden'); 

http://jsfiddle.net/pWdSP/1/

回答

1

我只能想到這個解決方案:

$('body *').addClass(function() { 
    var data = $(this).data(); 
    for (var i in data) if (data.hasOwnProperty(i)) { 
     if (data[i].indexOf('Programmer') > -1) { 
      return; 
     } 
    } 

    return 'hidden'; 
}); 

http://jsfiddle.net/pWdSP/4/

這不是最佳的,因爲它遍歷所有的DOM節點,但我沒有看到其他方式來選擇所有具有data-*屬性的節點。

如果有什麼節點應該查了一些更精確的規定 - - 它強烈建議相應地(而不是body *)更改選擇

+0

如果數據只存儲在div標籤,你可以永諾添加過濾器選擇器 – TCHdvlp

+0

@TCHdvlp:怎麼樣? .. – zerkms

+0

@zerkms ..我的意思是'$('div')'而不是'$('body *')' –

相關問題