2011-11-23 5 views
3

jQuery :contains 선택기가 IE8에서 작동하지 않는 것으로 보입니다.: IE8에 문제가 포함되어 있음

IE에서 다음 예제를 참조하십시오 - LIVE DEMO

JS :

$('table tr td:contains(" + ")').each(function(){ 
     $(this).addClass('url'); 
}); 
+0

jsFiddle이 평소와 같이 느려지고 있기 때문에 나는 당신의 피들을 볼 수는 없지만 다음과 같이'+'를 이스케이프 해보십시오 :'$ ('t ("\ +") ')' –

+0

@RoryMcCrossan - 이스케이프 문자를 사용하는 데 도움이되지 않습니다. – Varun

+0

공백이있는 선택자가 작동하지 않는다고 말하면 시작하면 공백을 사용하지 말라고 알려줍니다. . 무엇 이니? –

답변

4

당신은 HTML 엔티티 ( )

$('table tr td:contains(" + ")')가 작동하려면에 TDs를에 공간을 변환해야 . (동일 JS/CSS)

HTML :

<table> 
    <tr> 
     <td>&nbsp;+&nbsp;</td> 
     <td> 1 </td> 
     <td> 3 </td> 
     <td> 6 </td> 
     <td> 7 </td> 
    </tr> 
</table> 

는 최신 브라우저에 실패, 그래서 해결책은 그 브라우저 엔티티를 대체하는 것입니다 그러나. 너의 것의 앞에 다만이 조각을 prepend, 그것은 일할 것이다.

if(!($.browser.msie && $.browser.version < 10)){ 
    $('table tr td').each(function(){ 
     $(this).html($(this).html().replace(/&nbsp;/gi, ' ')); 
    }); 
} 
+1

IE8은 공백을 무시할 것이므로 실제로는 "+"가 아닙니다. 그러나 JS에서는 다음을 사용할 수 있습니다 : contains ("+")뿐만 아니라 공백을 HTML 엔티티로 변환 할 필요가 없습니다 – Chris

+1

'  +  '을 사용하면 IE에서 작동하지만 FF 또는 Chrome에서 작동합니다. 해결 방안은 무엇인가? – Iladarsda

+0

답변이 업데이트되었습니다. 현재 최신 브라우저에서 작동합니다. – Pierre

0

IE8 :contains 문제에 대한 또 다른 간단한 해결책 :

은 당신이 문자열 내부의 공간을 사용하지 않는 확인, 예를 들어

$('table tr td:contains("+")')당신의 HTML에 공백이 <td> + </td>이 있더라도를 작동합니다