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);
다음과 같은 것도 사용할 수 있습니다.
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
'programing' 카테고리의 다른 글
typescript에서 node-config를 사용하는 방법은 무엇입니까? (0) | 2023.06.11 |
---|---|
vuex '상수' 명명된 작업을 변수와 함께 참조하려면 어떻게 해야 합니까? (0) | 2023.06.11 |
Android에서 앱에서 공유 기본 설정 데이터를 삭제하는 방법 (0) | 2023.06.11 |
금액 열과 차변 대변 열만 있는 테이블에서 평가판 잔액 표시를 위한 전표 선택 (0) | 2023.06.11 |
사용자 정의 필드에 사용자 정의 분류법 용어 ID 사용 (0) | 2023.06.11 |