2013-02-12 59 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;