1. ホーム
  2. javascript

[解決済み] jQueryで要素の全属性を取得する

2022-06-24 22:20:19

質問

例えば、あるタグは3つ以上の属性を持っているかもしれませんが、私にはわからないので、これらの属性の名前と値を取得する必要があります。私は、以下のようなことを考えていました。

$(this).attr().each(function(index, element) {
    var name = $(this).name;
    var value = $(this).value;
    //Do something with name and value...
});

これが可能かどうか、また可能であれば正しい構文は何か、どなたか教えていただけませんか?

どのように解決するのですか?

この attributes プロパティはそれらすべてを含んでいます。

$(this).each(function() {
  $.each(this.attributes, function() {
    // this.attributes is not a plain object, but an array
    // of attribute nodes, which contain both the name and value
    if(this.specified) {
      console.log(this.name, this.value);
    }
  });
});


を拡張することもできます。 .attr のように呼び出せるようにすることです。 .attr() のように呼び出して、すべての属性のプレーンなオブジェクトを取得することができます。

(function(old) {
  $.fn.attr = function() {
    if(arguments.length === 0) {
      if(this.length === 0) {
        return null;
      }

      var obj = {};
      $.each(this[0].attributes, function() {
        if(this.specified) {
          obj[this.name] = this.value;
        }
      });
      return obj;
    }

    return old.apply(this, arguments);
  };
})($.fn.attr);

使用方法

var $div = $("<div data-a='1' id='b'>");
$div.attr();  // { "data-a": "1", "id": "b" }