2016-05-16 5 views
1

は私がVAR fileTypes属性値の部分一致は、別々の配列内の任意の値と一致していないのdiv

<dd data-param-type="facetFilters" data-param-value="document_type:pdf">PDFs</dd> 
<dd data-param-type="facetFilters" data-param-value="document_type:document">Documents</dd> 
<dd data-param-type="facetFilters" data-param-value="document_type:spreadsheet">Spreadsheets</dd> 
<dd data-param-type="facetFilters" data-param-value="document_type:presentation">Presentations</dd> 
<dd data-param-type="facetFilters" data-param-value="document_type:image">Images</dd> 

そして私に割り当てたdiv要素の次の配列を持っていると言ってクラスを追加します。また、次のオブジェクトがあります。

{email: 80, pdf: 27} 

fileTypes div要素をループするための最良の方法は何をして自分のdata-param-value試合emailまたはpdfもない場合disabledのクラスを追加しますか?

私は後のparam-値を抽出するために、次を使用しています:

var type = $(item).data('param-value'); 
var regex = /type:(.*)/; 
var match = regex.exec(type); 
console.log(match[1]); 
=> pdf // (document, spreadsheet, etc) 

私はかなり解決することはできませんどのように試合を含まないdivを見つけるためのクリーンな方法です。私はアンダースコアで_.filter_.differenceに亀裂を入れましたが、それを正しく得ることはできません。

+0

あなたはjQueryの答えと大丈夫だ場合質問でも同じです。 – Tushar

答えて

0

あなたはjQueryのを使用しているので、それはfilter方法は整合素子をフィルタリングするために使用することができます:jQueryのタグを追加する、および/または言及し、

// get the object keys 
var keys = Object.keys({email: 80, pdf: 27}); 

$('dd[data-param-value]').filter(function() { 
    var key = $(this).data('param-value').split(':')[1]; 
    return $.inArray(key, keys) === -1; 
}).addClass('disabled'); 

https://jsfiddle.net/vxduagky/

関連する問題