jQuery로 요소 유형 가져 오기


308

jQuery를 사용하여 jQuery를 사용하여 요소의 유형을 찾을 수 있습니까? 예를 들어 요소가 div, span, select 또는 input입니까?

예를 들어 jQuery를 사용하여 드롭 다운 목록에 값을로드하려고하지만 동일한 스크립트가 라디오 버튼 세트로 코드를 생성 할 수 있다면 다음과 같은 것을 만들 수 있습니까?

$('.trigger').live('click', function () {
   var elementType = $(this).prev().attr(WHAT IS IT);
});

트리거 클래스 옆에 버튼이있는 드롭 다운 목록이 주어지면 버튼을 누를 때 elementType변수가 반환 select됩니다.


당신은 문구를 바꿀 수 있습니까? 요소 유형이란 무엇입니까?
Abdul Munim


답변:


558

jQuery 방식으로 요소 유형 가져 오기 :

var elementType = $(this).prev().prop('nodeName');

jQuery없이 동일한 작업을 수행

var elementType = this.previousSibling.nodeName;

특정 요소 유형 확인 :

var is_element_input = $(this).prev().is("input"); //true or false

16
.prop () 함수는 jQuery 1.6에서만 추가되었다는 것을 기억하십시오. 사용중인 버전을 업그레이드해야 할 수도 있습니다!
xgretsch

이전 jQuery 1.3.2에서는 작동하지 않았으므로 최신으로 업그레이드하여 정상적으로 작동했습니다.
Damodar Bashyal

2
여기에 언급 된 것처럼 'tagName'을 'nodeName'으로 전환하여 향상시킬 수 있습니다 .
Kyle Stoflet

1
@KyleStoflet-당신이 옳고 nodeName더 많은 유형의 요소를 지원하며 IE5.5를 지원하는 것이 더 이상 문제가되지 않아야하므로 위의 답변에서 로 변경하는 tagName데 아무런 문제가 없습니다 nodeName. 둘 다 요소에 대해서는 잘 작동하고 후자는 텍스트 노드, 속성 등에 대해서도 작동합니다.
adeneo

3
작동하지만 문제의 예제 코드와 관련된 prev ()에 약간 혼란스러워했습니다. 기본적으로$(this).is("input");
Fanky

56

또한 당신은 사용할 수 있습니다 :

$("#elementId").get(0).tagName

26

당신은 tagName속성과 attr('type')입력을 사용해야 합니다


예를 들어이 설명을 더 강력하게 만들 수 있습니다.
Justapigeon

16

Distdev가 언급했듯이 여전히 입력 유형을 차별화해야합니다. 즉 말하자면,

$(this).prev().prop('tagName');

당신을 말할 것이다 input,하지만 체크 박스 / 텍스트 / 라디오 구분하지 않습니다. 입력 인 경우 다음을 사용할 수 있습니다.

$('#elementId').attr('type');

확인란 / 텍스트 / 라디오를 말하면 어떤 종류의 컨트롤인지 알 수 있습니다.


9

당신은 사용할 수 있습니다 .is():

  $( "ul" ).click(function( event ) {
      var target = $( event.target );
      if ( target.is( "li" ) ) {
         target.css( "background-color", "red" );
      }
  });

소스를 참조하십시오



3

tagName 대신 Nodename을 사용하십시오.

nodeName에는 tagName의 모든 기능 외에 몇 가지 기능이 포함되어 있습니다. 따라서 nodeName이 항상 더 나은 선택입니다.

DOM Core 참조

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.