1

私は次のような要素をいくつか持っています

<p data-lang-bg="Bulgarian" data-lang-en="English" >Text</p>
<p data-lang-bg="Other bulgarian text" data-lang-en="Other english text" >Text 2</p>

data-lang で始まるデータ属性を持つすべての要素を選択する jQuery セレクターを作成するのが困難です。そのようなjQueryセレクターを書くことは可能ですか

4

3 に答える 3

1

これが私が提案できる最も近いものです。

HTML を次の構造に変更します。

<p data-lang='{"bg":"Bulgarian","en":"English"}' >Text</p>

次に、このセレクターを使用します。

$('[data-lang]')

たとえば、言語の値を maps として取得できます。

$('[data-lang]').each(function(){
    var localizations = $(this).data('lang'); // parses the map as JSON
    ... use the object, for example localizations['en']
});

これは、カスタム データ属性の力を使用する正しい方法のように思えます。

于 2013-02-25T16:46:59.187 に答える
0

カスタム セレクターを使用します。

$.expr[':']['data-lang'] = function (obj) {
    var data = $(obj).data();
    for (i in data) {
        if (data.hasOwnProperty(i)) {
            if (i.indexOf('lang') === 0) {
                return true;
            }
        }
    }
};

で選択します$('p:data-lang')

于 2013-02-25T16:51:29.857 に答える
0

これは役立つかもしれません。

http://code.google.com/p/jquery-list-attributes/

(function($) {
      // duck-punching to make attr() return a map
      var _old = $.fn.attr;
      $.fn.attr = function() {
          var a, aLength, attributes,   map;
          if (this[0] && arguments.length === 0) {
                    map = {};
                    attributes = this[0].attributes;
                    aLength = attributes.length;
                    for (a = 0; a < aLength; a++) {
                              map[attributes[a].name.toLowerCase()] = attributes[a].value;
                    }
                    return map;
          } else {
                    return _old.apply(this, arguments);
          }
}
}(jQuery));

ソース: http://forum.jquery.com/topic/retrifying-all-attributes-of-a-given-element-and-their-values

于 2013-02-25T16:49:55.490 に答える