2013-04-26 112 views
2

我正在開發一個平臺,並希望統一和標準化整個平臺的某些行爲...... html元素中的data-attribute將扮演巨大的角色部分...從數據attr中獲取所有具有相同前綴的鍵/值對

因此,可以說我有一個按鈕:

<a href="..." class="btn" data-tip="My button" data-modal_tile="Foo" data-templade_data_id="14" data-templade_data_action="reset">...</a> 

現在,我的Javascript處理這個按鈕的行爲。

我想要的是設置一個template_data數組,它會給我所有具有相同前綴的數據屬性的鍵/值對(data-template_data _)... 所以在我的示例中,我會得到:

{ 
    id: "14", 
    action : "reset" 
} 

這樣做的最佳方法是什麼?

回答

3

試試這個

var array = []; 
$(".btn").each(function(){ 
    var obj = {}; 
    $.each(this.attributes, function() 
    { 
     if(this.name.indexOf("data-templade_data_") == 0) 
     { 
      var key = this.name.replace("data-templade_data_", ""); 
      obj[ key ] = this.value; 
     } 
    }); 
    array.push(obj); 
}); 
+0

好吧,謝謝...這樣的事情...有點短,因爲jQuery允許您使用$(el).data()訪問數據,所以我只會迭代低谷數據..雖然它很直接。 .. 謝謝 – 2013-04-26 09:40:08

1

這對我的作品

jQuery.fn.extend({ 
hyphened: function(prefix) { // prefix = data or myplugin 
    var attributes = {}; 
    $.each(this.get(0).attributes, function(index, attrib) { 
     if(attrib.name.indexOf(prefix+"-")==0) { 
      var key = attrib.name.replace(prefix+"-",""); 
      attributes[key] = attrib.value; 
     } 
    }); 

    return attributes; 
} 

});

相關問題