1

我已经构建了自己的自定义 jQuery 插件,并且正在尝试使用 HTML 数据属性覆盖默认选项。我为每个添加了一个前缀(寻呼机),所以我的最终标记是:

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

现在说我有一个对象:

var options = { page: 0 };

我想通过这样说来覆盖这些选项:

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

但是,这不起作用。在做了一点调试后,我发现 $('.pager').data('pager') 返回未定义。如果我说:

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

这将返回以下对象:

{ pagerPage: 1 }

我想我需要一些方法来将此对象转换为我需要的对象。请注意,我想添加许多选项,代码应该可以处理这个,而无需我处理每个单独的选项。

我相信其他人也遇到了这个问题,我会很感激任何帮助。谢谢

4

2 回答 2

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);

注意:将 5 替换为前缀的长度,将 6 替换为长度 + 1。希望这会有所帮助。

感谢凯文为我指明了正确的方向。

于 2013-02-13T04:45:51.943 回答
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 中是正确的;

于 2017-01-28T18:01:55.933 回答