jQuery : .attr ()을 통해 두 개의 속성 추가 방법


104

편집하다:

이외의 다른 값을 사용 _blank하면 모바일 브라우저에서 새 창 / 탭을 열지 않습니다.

예를 들어 새 창 / 탭을 열어야하는 경우 :

  • 이것은 모든 브라우저, 심지어 모바일 브라우저에서 작동 합니다 : target="_blank".

  • 이 작동하지 않는 모바일 브라우저,하지만 작동합니까 데스크톱 브라우저에서을 : target="new".

-

이 방법이 작동하지만 더 나은 방법이 있는지 또는 내가 얻은 방법이 올바른 / 유일한 방법인지 확실하지 않습니다.

기본적으로 내가하는 일은 모든 target="_new"또는 target="_blank"속성 값을 로 바꾸는 것입니다. target="nw"이렇게하면 하나의 새 창이 열리고 그 안에 여러 개의 창으로 사용자를 압도하지 않도록 다른 모든 새 창이 열립니다.

" 새 창에서 열기 " title=""속성 도 추가 합니다.

그래서 내가 만든 솔루션은 다음과 같습니다.

$("a[target='_blank'], a[target='_new']").attr('target','nw').attr('title','Opens in a new window');

두 가지 .attr();방법에 주목하십시오 .

이것이 요소에 두 개의 속성을 추가하는 올바른 방법입니까?

시도 .attr('target','nw','title','Opens in a new window')했지만 작동하지 않았습니다.

제가 묻는 이유는 DYR (Do n't Repeat Yourself) 원칙 때문입니다. 그래서 제가 가지고있는 코드를 개선 할 수 있다면 훌륭합니다. 그렇지 않다면 그것은 그 자체입니다.

감사.


@zzzzBov, 네, 맞아요, 정보 감사합니다.
Ricardo Zea

두 가지 속성을 동일한 값으로 설정하고 싶었으므로 부끄러운 일 .attr('a,b','value')이 아닙니다. 나는 또한에 정착했다 .attr('a',1).attr('b',1). 새 창에 덜 의존하는 것이 또 다른 접근 방식 일 수 있습니다. 귀하의 경우 @ricardozea : P
Alastair

답변:


228

작동해야합니다 :

.attr({
    target:"nw", 
    title:"Opens in a new window",
    "data-value":"internal link" // attributes which contain dash(-) should be covered in quotes.
});

참고 :

" 여러 속성을 설정할 때 속성 이름을 따옴표로 묶는 것은 선택 사항입니다.

경고 : 'class'속성을 설정할 때 항상 따옴표를 사용해야합니다!

.attr에 대한 jQuery 문서 (2016 년 9 월)에서 :

document.createElement ()를 통해 생성 된 입력 또는 버튼 요소의 유형 속성을 변경하려고하면 Internet Explorer 8 이상에서 예외가 발생합니다.

편집 :
향후 참조를 위해 ... 사용 하는 단일 속성 을 얻으 려면

var strAttribute = $(".something").attr("title");

단일 속성 을 설정 하려면

$(".something").attr("title","Test");

여러 속성 을 설정 하려면 모든 것을 {...}로 래핑해야합니다.

$(".something").attr( { title:"Test", alt:"Test2" } );

편집-확인란에서 '선택됨'속성을 가져 오거나 설정하려는 경우 ...

jQuery 1.6 이상 부터 사용해야합니다.prop()

.prop () 메서드는 속성 값을 명시 적으로 검색하는 방법을 제공하는 반면 .attr ()은 속성을 검색합니다.

... checked 속성에 대해 기억해야 할 가장 중요한 개념은 checked 속성과 일치하지 않는다는 것입니다. 속성은 실제로 defaultChecked 속성에 해당하며 확인란의 초기 값을 설정하는 데만 사용해야합니다. 확인 된 속성 값은 확인란의 상태에 따라 변경되지 않지만 확인 된 속성은 변경됩니다.

따라서 체크 박스의 상태확인 하려면 다음을 사용해야합니다.

$('#checkbox1').prop('checked'); // Returns true/false

또는 확인란을 선택 또는 선택 취소로 설정하려면 다음을 사용해야합니다.

$('#checkbox1').prop('checked', true); // To check it
$('#checkbox1').prop('checked', false); // To uncheck it

1
아하! 좋아, 이것이 내가 언급 한 것입니다. 설명해 주셔서 감사합니다. 그래서 Derek 대신 귀하의 답변을 선택했습니다. 감사합니다 Adam. 추신. 7 분 후에 답변을 수락하겠습니다. 지금은 수락 할 수 없습니다.
Ricardo Zea

수정 : 요소가 새로 생성되었지만 DOM에 추가되지 않은 경우 IE에서 유형 속성을 변경할 수 있습니다.
Akash Kava

여러 속성을 설정하려면 모든 것을 {...}로 래핑해야합니다 ... 키를 따옴표로 묶을 필요가 없습니까?
Gcamara14

27

적절한 방법은 다음과 같습니다.

.attr({target:'nw', title:'Opens in a new window'})

9

앵커 태그에 부트 스트랩 속성을 동적으로 추가하면 이보다 많은 도움이됩니다.

 $(".dropdown a").attr({
      class: "dropdown-toggle",
     'data-toggle': "dropdown",
      role: "button",
     'aria-haspopup': "true",
     'aria-expanded': "true"
});


1

중괄호를 사용하고 추가하려는 모든 속성을 안에 넣으십시오.

예:

$('#objId').attr({
    target: 'nw',
    title: 'Opens in a new window'
});

0
Multiple Attribute

var tag = "tag name";
createNode(tag, target, attribute);

createNode: function(tag, target, attribute){
    var tag = jQuery("<" + tag + ">");
    jQuery.each(attribute, function(i,v){
        tag.attr(v);
    });
    target.append(tag);
    tag.appendTo(target);
}
var attribute = [
    {"data-level": "3"},
];

답장을 보내 주셔서 감사합니다. 코드를 설명하거나 작동하는 데모를 추가해 주시겠습니까?
Ricardo Zea
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.