jQuery는 요소에 속성이 있는지 확인하기 위해 특성을 가지고 있습니다.
jQuery의 요소에 속성이 있는지 어떻게 확인합니까?와 유사한hasClass하지만 그와 함께attr?
예를들면,
if ($(this).hasAttr("name")) {
// ...
}
var attr = $(this).attr('name');
// For some browsers, `attr` is undefined; for others,
// `attr` is false. Check for both.
if (typeof attr !== 'undefined' && attr !== false) {
// ...
}
그냥.$(this).is("[name]")?
그[attr]구문은 속성이 있는 요소에 대한 CSS 선택기입니다.attr,그리고..is()호출되는 요소가 지정된 CSS 셀렉터와 일치하는지 확인합니다.
만약 당신이 속성의 존재를 자주 확인할 것이라면, 저는 다음을 만드는 것을 제안하고 싶습니다.hasAttr함수: 질문에서 가정한 대로 사용합니다.
$.fn.hasAttr = function(name) {
return this.attr(name) !== undefined;
};
$(document).ready(function() {
if($('.edit').hasAttr('id')) {
alert('true');
} else {
alert('false');
}
});
<div class="edit" id="div_1">Test field</div>
당신이 너무 가까워서 미쳤어요.
if($(this).attr("name"))
hasAttrt는 없지만 이름으로 속성을 누르면 정의되지 않은 속성이 반환됩니다.
이것이 바로 아래가 작동하는 이유입니다.#heading에서 name 속성을 제거하면 두 번째 경고가 실행됩니다.
업데이트: 설명에 따르면 아래는 속성이 존재하고 속성이 존재하지 않고 비어 있는 것으로 설정된 경우에만 작동합니다.
<script type="text/javascript">
$(document).ready(function()
{
if ($("#heading").attr("name"))
alert('Look, this is showing because it\'s not undefined');
else
alert('This would be called if it were undefined or is there but empty');
});
</script>
<h1 id="heading" name="bob">Welcome!</h1>
파티에 늦었지만...왜 그냥this.hasAttribute("name")?
참조 항목
이를 위한 가장 좋은 방법은filter():
$("nav>ul>li>a").filter("[data-page-id]");
.hasAttr()이 있으면 여전히 좋겠지만, 존재하지 않기 때문에 이런 방법이 있습니다.
Object.prototype.hasAttr = function(attr) {
if(this.attr) {
var _attr = this.attr(attr);
} else {
var _attr = this.getAttribute(attr);
}
return (typeof _attr !== "undefined" && _attr !== false && _attr !== null);
};
저도 같은 일을 하기 위해 제 기능을 쓰다가 이것을 우연히 발견했습니다.다른 사람이 여기서 발을 헛디딜 경우를 대비해 나눠야겠다고 생각했습니다.속성이 없으면 getAttribute()가 null을 반환하기 때문에 null을 추가했습니다.
이 방법을 사용하면 jQuery 객체와 일반 javascript 객체를 확인할 수 있습니다.
다음과 같은 양식 필드 등에서 비활성화="비활성화"와 같은 속성과 함께 사용할 수도 있습니다.
$("#change_password").click(function() {
var target = $(this).attr("rel");
if($("#" + target).attr("disabled")) {
$("#" + target).attr("disabled", false);
} else {
$("#" + target).attr("disabled", true);
}
});
rel 속성은 대상 입력 필드의 ID를 저장합니다.
저는 OP가 요청한 대로 이 모든 것을 매우 간단하게 수행할 jquery용 hasAttr() 플러그인을 작성했습니다.자세한 내용은 여기를 참조하십시오.
편집: 내 플러그인이 위대한 플러그인에서 삭제되었습니다.2010년의 jquery.com 데이터베이스 삭제 재해.직접 추가하는 방법과 추가되지 않은 이유에 대한 자세한 내용은 여기를 참조하십시오.
언급URL : https://stackoverflow.com/questions/1318076/jquery-hasattr-checking-to-see-if-there-is-an-attribute-on-an-element
'programing' 카테고리의 다른 글
| 루비에서 시작, 구조 및 보장? (0) | 2023.06.03 |
|---|---|
| 산술 연산으로 오버플로가 발생했습니다. (정수 추가) (0) | 2023.06.03 |
| Ruby 정규식의 \A \z와 ^ $ 간의 차이 (0) | 2023.06.03 |
| 스플래시 화면을 만들려면 어떻게 해야 합니까? (0) | 2023.06.03 |
| Passing variables in remote ssh command (0) | 2023.06.03 |