<td>
:
</td>
Не содержит :
ни в одном браузере, так как завершающий перевод новой строки отличается от пробела. Тем не менее:
<td> : </td>
теперь дает разные результаты в IE и Firefox. contains
не совпадает в IE, потому что его парсер молча отбрасывает пробел, как IE любит делать. Если вы посмотрите на innerHTML
, вы увидите:
<TD>: </TD>
Что неудивительно, что не соответствует селектору.
Так что будьте осторожны с contains
и пробелами, потому что анализатор HTML в IE такой же изворотливый, как и всегда.
Лично я бы старался избегать нестандартных селекторов jQuery, таких как :has
и особенно :contains
, так как они требуют, чтобы jQuery выполнял много медленной работы. Стандартные селекторы CSS2-3, с другой стороны, могут быть переданы в собственный механизм выбора браузера в новых браузерах с поддержкой Selectors-API (включая IE8).
Как насчет чего-то вроде:
$('.ms-sitedirresultssort ~ table td').filter(function() {
return this.text().match(/(^|\s):(\s|$)/);
})
~
- селектор CSS3 для любого последующего брата; IE8 поддерживает это.