programing

jQuery는 요소에 속성이 있는지 확인하기 위해 특성을 가지고 있습니다.

easyjava 2023. 6. 3. 08:50
반응형

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

반응형