2010-02-18 4 views
8

태그가 이미지 태그처럼 JQuery로 자동 닫히는 지 감지 할 수있는 방법이 있습니까? 이미지 태그가 아닌 역동적 인 것.JQuery가 태그가 자동으로 닫히는 경우 감지합니다.

if ($('.selector')[0].tagName.toLowerCase()=="img") { 
    // do something 
} 
+0

왜 당신이 알 필요합니까? – cletus

+0

@cletus : OP의 이전 질문에서 줄기 : http://stackoverflow.com/questions/2291434/jquery-check-if-prepend-failed – Sampson

답변

2

비어있는 요소와 자동 닫기를 구분해야합니까? 그렇지 않다면, 당신은 사용할 수 있습니다 : 당신이 잘못 만드는 것을 중지되지 있기 때문에 주어진 HTML 태그가 비어 여부를해야합니다 여부를 검출 말하는 건가

if ($(".selector").is(":empty")) { 
    // do something 
} 

을하지만, 아니 당신은 프로그래밍 할 수 없어 HTML을 확인하려면 DTD에 대해 유효성을 검사해야합니다.

+0

이것은 제 목적을 위해 작동하며 위도 마찬가지입니다.하지만이 것은 가장 깨끗한 대답. – Hatchware

10

jQuery를 내부적으로이 목록을 사용 : 동일한 작업을 수행 할 수 있습니다

/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i 

:

if(/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i.test($('.selector')[0].tagName)) { 
//do something 
} 
+1

이것은 허용 된 대답이어야합니다. –

0

당신이 빈 문자열을 반환 있는지 확인하기 위해 .html() 접근을 확인할 수 있습니다. 비록 이것이 <p></p>에 사실로 돌아갈 것이지만, 나는 모든 의도와 목적을 위해 자체 폐쇄 태그로 간주 될 수있는 이미징을 원합니다.

3

약간의 배경이 필요합니다. 유선을 통해 전송되는 HTML 마크 업은 브라우저에서 DOM 트리로 구문 분석됩니다. 이 시점에서 원래 마크 업은 사라지고 목적을 달성했으며 더 이상 존재하지 않습니다. 요소에서 innerHTML을 수행하면 해당 요소를 생성 한 리터럴 HTML이 아니라 해당 DOM 하위 트리의 브라우저 직렬화가됩니다.

요점은 <div /><div></div> 사이에는 차이가 없음을 의미합니다. 그래서 아이가 있는지보십시오. 그렇지 않으면 요소에에 자체 마감 태그를 사용하는 XHTML 표현이 가능합니다.

element.children().length == 0 

또는 클리 터스 같은

는 말한다 :

element.is(":empty") 
+1

'children()'은 텍스트 노드를 반환하지 않습니다. jQuery가 구현할 때,'element.children(). length' 대신'element.contents(). length'를 사용해야합니다. Children()은 모든 자식 _tag_ 요소를 반환합니다. Contents()는 모든 자식 _tag_ 요소 **와 ** 모든 node_text를 반환합니다. 예 :'$ ('

hello
') .children(). length'은 0을 반환하고, $ ('
hello
') .contents(). length는 1을 반환합니다. –

관련 문제