2010-03-31 4 views
11
는()의 jQuery HTML과 함께 다음 문제를 자기 폐쇄 요소를 작성하는 일이

동안 :의 jQuery HTML() 및 자동 폐쇄 태그

$('#someId').html('<li><input type="checkbox" /></li>') 

그것은 제대로 <li> 태그를 닫

<li><input type="checkbox"></li> 

을 만듭니다 하지만 아니야 <input>

html() 함수에서 사용되는 innerHTML에서 문제가되는 것 같습니다.

나는 모든 곳에서 보니 이것에 대한 해결책을 찾았지만 당신이 본대로 페이지는 더 이상 사용할 수 없습니다 있습니다 http://dev.jquery.it/ticket/3378

누구가이 문제를 어떻게 해결 아는 사람? 명확히하기 위해

+0

방금 ​​ $ ('#의 someId')로 변경할 수 없습니다 당신은을 사용하고 ('

  • <입력 유형 = "체크 박스">
  • ') – Avitus

    +0

    HTML을. XHTML 닫는 방법. 그게 네가 원하는거야 아니면 그냥 HTML인가? – dscher

    +0

    html을 자기 닫아서는 안됩니다 – theonlygusti

    답변

    7

    이 유효한 HTML입니다 :

    <input type="checkbox"> 
    

    이 유효 (XHTML 포함) XML입니다 :

    <input type="checkbox"/> 
    

    하지만 하지 유효한 HTML입니다. 즉, 대부분의 브라우저는 어쨌든 그것을 수락 할 것입니다 (하지만 그 문서가 유효하지 않으면 유효하지 않습니다).

    html()innerHTML을 사용합니다. XHTML은 여전히 ​​HTML DOM으로 모델링되기 때문에 IE 및 기타 브라우저에서이 문제가 발생합니다. Internal IE-HTML DOM still isn’t XHTML compliant을 참조하십시오.

    기본적으로 XHTML을 사용하는 이유는 거의 없습니다. 그것은 크로스 브라우저의 악몽입니다. 이유에 대한 자세한 개요는 XHTML - Is writing self closing tags for elements not traditionally empty bad practise?, 특히 첫 번째 대답을 참조하십시오.

    +0

    xhtml을 사용하고 있습니다 ... – UXTE

    +0

    XHTML이 올바르지 않습니다 - "XHTML에서 태그를 올바르게 닫아야합니다 (예 : )." – dscher

    +1

    @Pedro 제 조언은 "XHTML을 사용하지 마십시오"입니다. 그것은 약간의 브라우저 간 악몽입니다. http://stackoverflow.com/questions/348736/xhtml-is-writing-self-closing-tags-for-elements-not-traditionally-empty-bad-pra – cletus

    1

    HTML5 시대에 <input type="checkbox"><input type="checkbox" />은 동일한 공백 요소를 똑같이 유효하게 표시한다고 주장 할 수 있습니다.

    • 보이드 요소는 관계없이 브라우저로 표현 방법 의 무효 요소 : 그 사실이지만

      는 이유 innerHTML은 여전히 ​​두 가지입니다 />없이 무효 요소를 직렬화한다. 브라우저가 요소를 구성 할 때까지는 마크 업과 관련이 없으며 DOM과 관련하여 input 요소 유형 확인란이 있습니다. 요소의 '태그'와 관련이있는 유일한 위치는 tagName 속성이고, even that has its own quirk 속성입니다. HTML5 자체가 HTML이 아닌 XML을 기반으로하고 덕분에, 그것을 필요로하지 않을 때 에 브라우저에 대해 어떠한 이유가 없다

    • /> 구문을 무효 요소를 직렬화 시작합니다. /> 구문을 사용하는 것이 똑같이 유효하다는 이유만으로도 (/>의 존재로 인해 출력의 의미가 변경되지 않으므로) 전혀 이득이없는 레거시 사이트와의 호환성이 불필요하게 중단됩니다. HTML 마크 업과 XHTML 마크 업을 구별하는 cletus의 대답으로 돌아갑니다.

    innerHTML

    및 확장 jQuery.html()으로는 DOM에서 당신에게 요소의 내용 의 HTML 표현을 제공하도록 설계되었다. 이 아닌은 브라우저가 DOM에서 요소를 구성하는 데 사용한 HTML 마크 업을 제공하도록 설계되었습니다. 처음에는 수정해야 할 것이 없기 때문에 이것을 고칠 수는 없습니다. 당신이해야 할 일은 아마도 가끔 디버깅 세션 이외의 다른 것을 위해 요소의 innerHTML에 의존하지 않는 것입니다.

    은 참조 : Nested <p> tag auto-closing/opening

    관련 문제