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に置き換えます。これがお役に立てば幸いです。

私を正しい方向に向けてくれたKevinに感謝します。

于 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 に答える