2013-02-12 57 views
1

我已經構建了自己的自定義jQuery插件,並試圖覆蓋使用HTML數據屬性的默認選項。我加了前綴(尋呼機),以每一個,所以我最終加價是:帶前綴覆蓋對象的jQuery數據屬性

<div class="pager" data-pager-page="1"></div> 

現在說我有一個對象:

var options = { page: 0 }; 

我想說覆蓋選項例如:

var o = $.extend({}, options, $('.pager').data('pager')); 

但是這不起作用。在調試結束後,我發現$('。pager')。data('pager')返回undefined。如果我說:

$('.pager').data(); 

這將返回以下對象:

{ pagerPage: 1 } 

我想我會需要一些方法來此對象轉換爲一個我需要的。請注意,我想添加許多選項,代碼應該處理這個,而不必處理每個單獨的選項。

我確信其他人已經遇到這個問題,我會很感激任何幫助。由於

+1

我會建議只是收集可能的數據屬性,然後遍歷它們以查看哪些被定義並相應地處理它們。看看jQuery Cycle2如何實現它,malsup可能已經想出了一些處理它的直觀方式。 – 2013-02-12 22:52:19

+0

謝謝,他們的網站目前似乎在下降。 – nfplee 2013-02-12 23:02:24

+0

雖然github仍然存在,https://github.com/malsup/cycle2 – 2013-02-12 23:03:24

回答

1

櫃面任何人有興趣下面的代碼做的伎倆:

var data = $('.pager').data(); 

for (var p in data) { 
    if (data.hasOwnProperty(p) && /^pager[A-Z]+/.test(p)) { 
     var shortName = p[5].toLowerCase() + p.substr(6); 
     data[shortName] = data[p]; 
    } 
} 

var o = $.extend({}, options, data); 

注:與前綴的長度和6長度+ 1,希望這有助於更換5。

感謝凱文指着我在正確的方向。

+0

感謝這一個。我在網上尋找解決方案,但最終這似乎是唯一的解決方案。如果jQuery支持數據屬性前綴,會很好。 – 2014-02-05 19:12:35

0
<div id="test" data-key="xyz">helloooooo</div> 

<script type="text/javascript"> 
var value = $("#test").data("key"); 
alert(value); //This will show you "xyz" 
</script> 

我認爲它是在HTML4和HTML5中爲true;