[JQUERY] jQuery를 사용하여 요소의 모든 속성을
JQUERYjQuery를 사용하여 요소의 모든 속성을
해결법
-
1.분실물은 그들 모두를 포함 속성 :
분실물은 그들 모두를 포함 속성 :
$(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" }
-
2.여기에 내 자신의 기준뿐만 아니라 당신을 위해, 할 수있는 많은 방법의 개요입니다 :) 기능은 속성 이름과 값의 해시를 반환합니다.
여기에 내 자신의 기준뿐만 아니라 당신을 위해, 할 수있는 많은 방법의 개요입니다 :) 기능은 속성 이름과 값의 해시를 반환합니다.
바닐라 JS :
function getAttributes ( node ) { var i, attributeNodes = node.attributes, length = attributeNodes.length, attrs = {}; for ( i = 0; i < length; i++ ) attrs[attributeNodes[i].name] = attributeNodes[i].value; return attrs; }
Array.reduce 바닐라 JS
(2011) ES 5.1을 지원하는 브라우저에서 작동합니다. IE9 +가 필요합니다, IE8에서 작동하지 않습니다.
function getAttributes ( node ) { var attributeNodeArray = Array.prototype.slice.call( node.attributes ); return attributeNodeArray.reduce( function ( attrs, attribute ) { attrs[attribute.name] = attribute.value; return attrs; }, {} ); }
jQuery를
이 함수는 jQuery를 객체가 아닌 DOM 요소를 기대하고있다.
function getAttributes ( $node ) { var attrs = {}; $.each( $node[0].attributes, function ( index, attribute ) { attrs[attribute.name] = attribute.value; } ); return attrs; }
밑줄
또한 lodash 작동합니다.
function getAttributes ( node ) { return _.reduce( node.attributes, function ( attrs, attribute ) { attrs[attribute.name] = attribute.value; return attrs; }, {} ); }
LODS
밑줄 버전보다 훨씬 더 간결이지만,뿐만 아니라 밑줄을 위해, lodash 작동합니다. IE9 +가 필요합니다, IE8의 버그입니다. 그 하나 @AlJey 했네.
function getAttributes ( node ) { return _.transform( node.attributes, function ( attrs, attribute ) { attrs[attribute.name] = attribute.value; }, {} ); }
테스트 페이지
JS 빈에서 이러한 모든 기능을 포함하는 라이브 테스트 페이지가있다. 시험은 부울 속성 (숨김) 및 열거 속성 (의 contentEditable = "")가 포함되어 있습니다.
-
3.LoDash 당신은 단순히이 작업을 수행 할 수 있습니다 :
LoDash 당신은 단순히이 작업을 수행 할 수 있습니다 :
_.transform(this.attributes, function (result, item) { item.specified && (result[item.name] = item.value); }, {});
-
4.디버깅 스크립트 (hashchange 이상 응답에 기초 JQuery와 용액)
디버깅 스크립트 (hashchange 이상 응답에 기초 JQuery와 용액)
function getAttributes ( $node ) { $.each( $node[0].attributes, function ( index, attribute ) { console.log(attribute.name+':'+attribute.value); } ); } getAttributes($(this)); // find out what attributes are available
-
5.자바 스크립트 기능을 사용하여이 NamedArrayFormat의 요소의 모든 속성을 얻을 쉽습니다.
자바 스크립트 기능을 사용하여이 NamedArrayFormat의 요소의 모든 속성을 얻을 쉽습니다.
$ ( "# myTestDiv"). ((기능을 클릭) { . var에 바인드합니다 = document.getElementById를 ( "myTestDiv")는 속성; attrs에 ($ .each 함수 (I, ELEM) { .. $ ( "#의 바인드합니다") HTML ($ ( "#의 바인드합니다") HTML () + "로
"+ elem.name + " B> "+ elem.value + "< / I> "); }); }); <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"> script>이 버튼을 클릭하면 DIV>속성이다6.Underscore.js하여 간단한 솔루션
Underscore.js하여 간단한 솔루션
예를 들어 부모 클래스가의 모든 링크 텍스트를 가져 someClass
_.pluck($('.someClass').find('a'), 'text');
작업 바이올린
7.나의 제안:
나의 제안:
$.fn.attrs = function (fnc) { var obj = {}; $.each(this[0].attributes, function() { if(this.name == 'value') return; // Avoid someone (optional) if(this.specified) obj[this.name] = this.value; }); return obj; }
VAR A = $ (엘) .attrs ();
from https://stackoverflow.com/questions/14645806/get-all-attributes-of-an-element-using-jquery by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] Laravel 5.5 아약스 전화 419 (알 수없는 상태) (0) 2020.10.16 [JQUERY] 어떻게 HTML 파일에 자바 스크립트 파일을 링크합니까? (0) 2020.10.16 [JQUERY] 내 웹 사이트에 "추가 즐겨 찾기"버튼 또는 링크를 추가하는 방법은 무엇입니까? (0) 2020.10.16 [JQUERY] 자바 스크립트 및 사용 jQuery를 함께 jQuery를로드 (0) 2020.10.16 [JQUERY] 어떻게 ES6 구문을 사용하여 JQuery와 가져? (0) 2020.10.16