생성 된 ID가있는 확인란 모음이 있으며 그중 일부에는 추가 속성이 있습니다. JQuery를 사용하여 요소에 특정 속성이 있는지 확인할 수 있습니까? 예를 들어 다음 요소에 “myattr”속성이 있는지 확인할 수 있습니까? 속성 값은 다를 수 있습니다.
<input type="checkbox" id="A" myattr="val_attr">A</input>
예를 들어 하나씩 확인하지 않고이 속성을 가진 모든 확인란의 컬렉션을 얻는 방법은 무엇입니까? 이게 가능해?
답변
당신은 그들을 선택할 수 있습니까? 그렇다면, 예 :
$(":checkbox[myattr]")
답변
if ($('#A').attr('myattr')) {
// attribute exists
} else {
// attribute does not exist
}
편집하다:
위의 내용은 존재 하는 경우 else
-branch에 속 myattr
하지만 빈 문자열 또는 “0”입니다. 그것이 문제라면 명시 적으로 테스트해야합니다 undefined
.
if ($('#A').attr('myattr') !== undefined) {
// attribute exists
} else {
// attribute does not exist
}
답변
질문이 나온 지 오랜 시간이 걸렸지 만 수표가 다음과 같이 더 명확하다는 것을 알았습니다.
if ($("#A").is('[myattr]')) {
// attribute exists
} else {
// attribute does not exist
}
답변
이것은 작동합니다 :
$('#A')[0].hasAttribute('myattr');
답변
자바 스크립트에서 …
null == undefined
… true
*를 반환합니다 . 이 사이의 차이점 ==
과 ===
. 또한 이름 undefined
을 정의 할 수 있으므로 (예 : 키워드 null
가 아님) 다른 방법을 확인하는 것이 좋습니다. 가장 신뢰할 수있는 방법은 아마도 typeof
연산자 의 반환 값을 비교하는 것입니다 .
typeof o == "undefined"
그럼에도 불구 하고이 경우 null과 비교하면 작동합니다.
* undefined
실제로는 정의되지 않은 것으로 가정 합니다.
답변
$("input[attr]").length
더 나은 옵션이 될 수 있습니다.
답변
“typeof”, jQuery “.is”및 “.filter”를 사용하여 몇 가지 아이디어를 얻었으므로 빠른 비교를 게시 할 것이라고 생각했습니다. typeof가 가장 적합한 것으로 보입니다. 다른 것들도 작동하지만이 노력으로 jq 라이브러리를 호출 할 때 명확한 성능 차이가있는 것으로 보입니다.