Кажется, что элементы, выбранные с помощью :contains(sub)
с sub
, содержащими <
или >
, не могут добраться до их родителей.
Следующий пример должен проиллюстрировать проблему, с которой я столкнулся как в Safari, так и в Camino (Gecko on Mac):
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
</head>
<body>
<p><strong>bar</strong></p>
<p><strong><foo></strong></p>
<script type="text/javascript">
alert($('body strong:contains("bar")').length);
alert($('body strong:contains("bar")').parent().length);
alert($('body strong:contains("<foo>")').length);
alert($('body strong:contains("<foo>")').parent().length); // this fails
alert($('body strong').length);
alert($('body strong').parent().length); // two p elements
alert($('body strong').parent().parent().length); // one body
</script>
</body>
</html>
Выход:
1
1
1
0
2
2
1
Любые идеи, почему четвертый 0
вместо 1
, или как я могу обойти это?
Эта страница упоминает экранирование имен в селекторах, но это тоже не сработало (также я не уверен, применимо ли это).