2011-01-17 1 views
0

ajax 호출에서 HTML 조각을 다시 얻습니다. jQuery를 사용하고 있으며 조각 내에서 TR 만 원한다. TR을 찾기 위해 jQuery 선택기를 사용하면 Firefox에서만 IE가 발생하지 않습니다.부모가 innerHTML을 사용할 때 Firefox에서 TR 및 TD 문자열을 삭제하는 이유

그래서 해결 방법으로 내가

$(ajaxString).filter('form').first().html() 

또한

$(ajaxString).filter('form').first()[0].innerHTML 

에만 IE에서 일 그 두 가지 방법을 시도 할 줄 알았는데, 파이어 폭스의 TR과 TD 요소에서 사라 만있다 span이 반환됩니다. 문제와 해결책은 무엇입니까? :-)

<form method="post"> 
<tr> 
    <td><span> stuff </span></td> 
<tr> 
<form> 
+3

''은 '

'의 직접적인 하위 항목이어야하며, 브라우저가 HTML을 DOM으로 구문 분석하면 유효하지 않은 태그가 제거됩니다. –

답변

3

같은 것을 사용할 수 있습니다.

즉 innerHTML을 사용할 때 제거하지 않기 때문에 처음에는 실제로 HTML이 아닌 구문을 분석 할 때 innerHTML을 제거합니다.

양식과 테이블 간의 관계는 "테이블이 양식에 있습니다"또는 "양식이 테이블 셀에 있습니다"중 하나 일 수 있습니다.

+0

그럼에도 불구하고 그것은 바보 같지만 정확합니다. 이번에 좋은 책에서 IE 점수 점수를 얻은 것 같습니다. –

+1

특정 방식으로 완전히 잘못된 코드를 처리하기위한 브라우저는 어떤 점수도 주어서는 안됩니다. 그들은 단지 나쁜 상황을 극복하고 있습니다. – Quentin

0

HTML 조각은 유효한 것이어야합니다. 파이어 폭스 오류가 유효하지 않은 요소가 테이블 행을 감싸되고 수정할 때

<form method="post"> 
    <table> 
    <tr> 
     <td><span> stuff </span></td> 
    <tr> 
    </table> 
<form> 

같은 뭔가 그런 다음 그것은 DOM의 테이블이 끝난 후 해당 요소를 배치,

$(ajaxString).find("form").html(); 
+0

테이블 전체를 삽입 할 필요가 없습니다. 나는 그것이 지금 당장의 일이라고 생각합니다. 감사. –

관련 문제