programing

jQuery에서 일치하는 요소의 요소 유형을 확인하려면 어떻게 해야 합니까?

nicescript 2023. 6. 11. 21:54
반응형

jQuery에서 일치하는 요소의 요소 유형을 확인하려면 어떻게 해야 합니까?

ID 이름으로 ASP.Net 생성 요소를 일치시키고 있지만 페이지 컨텍스트에 따라 텍스트 상자나 레이블로 렌더링할 수 있는 요소가 있습니다.내용을 val()로 받을지 html()로 받을지 알기 위해 텍스트 상자와 라벨 중 어느 것과 일치하는지 알아야 합니다.

$("[id$=" + endOfIdToMatch + "]").each(function () {
    //determine whether $(this) is a textbox or label
    //do stuff
});

작동하지 않고 "정의되지 않음"만 반환되는 솔루션을 반환합니다.

$("[id$=" + endOfIdToMatch + "]").each(function () {
    alert($(this).tagName);
});

제가 무엇을 빠뜨리고 있나요?

jQuery 하나만 너무 많이:

$("[id$=" + endOfIdToMatch + "]").each(function () {
    alert(this.tagName);
});

()사용하지 않고 이 솔루션을 고려합니다.

var elements = $("[id$=" + endOfIdToMatch + "]");
var vals = elements.is("input").val();
var htmls = elements.is("label").html();
var contents = vals.concat(htmls);

is에 대한 설명서를 확인합니다.

다음과 같은 것도 사용할 수 있습니다.

if ($(this).is('input:checkbox'))

"이"를 필요한 인스턴스로 바꾸고 "instance"를 필요한 입력 유형으로 바꿉니다.

처음으로 제 질문에 대답했습니다.조금 더 실험한 후:

$("[id$=" + endOfIdToMatch + "]").each(function () {
   alert($(this).attr(tagName));
});

작동합니다!

tagName 정말 좋은 팁입니다.반환되는 값은 문서 유형(HTML 또는 XML/XHTML)에 따라 다르므로 tagName.toLowerCase()도 사용할 것을 제안합니다.

참조: http://reference.sitepoint.com/javascript/Element/tagName

jquery 1.6 prop 사용()

var el = $('body');

if (el.prop('tagName') === 'BODY') {
    console.log('found body')
}

요소 유형을 가져오는 가장 좋은 방법입니다.

function tgetelementType( elmentid )
{

    var TypeName = $('#' + elmentid).get(0).tagName;
    var TypeName2 = $('#' + elmentid).get(0).type;


    if($('#' + elmentid).get(0).tagName== "INPUT")
    {
       return $('#' + elmentid).get(0).type.toUpperCase()
    }
    else 
    {
        return $('#' + elmentid).get(0).tagName.toUpperCase() ; 
    }
}
$("[id$=" + endOfIdToMatch + "]").each(function(){
    var $this=jQuery(this),ri='';
    switch (this.tagName.toLowerCase()){
        case 'label':
            ri=$this.html();
            break;
        case 'input':
            if($this.attr('type')==='text'){ri=$this.val();}
            break;
        default:
            break;
    }
    return ri;
})

문제는 태그 이름을 결정한 후에 무엇을 할 것인가 하는 것입니다..end()와 결합된 추가 선택기를 사용하여 jquery 목록을 쉽게 필터링할 수 있습니다.

$("[id$=" + endOfIdToMatch + "]")
    .find("input:text")
    .each(function(){
         /* do something with all input:text elements */
    })
    .end()
    .find("label")
    .each(function(){
        /* do something with label elements */
    })
    .end()

이 특정 요소 모음을 사용하여 추가 작업을 수행해야 하는 경우에도 이 작업은 계속 연결될 수 있습니다.위의 예와 같이.

어느 경우든, 당신은 내부에 있는 동안 값으로 무언가를 해야 할 것입니다.each()진술들

그러나 또 다른 해결책은 논란의 여지가 있지만 각 요소 유형에 대해 두 개의 별도 함수를 작성하는 것입니다.

$("input#" + id).each(function() { alert(this + " is an input"); });
$("label#" + id).each(function() { alert(this + " is a label"); });

언급URL : https://stackoverflow.com/questions/341900/how-can-i-determine-the-element-type-of-a-matched-element-in-jquery

반응형