jQuery元素无法选择parent()

Dan*_*eck 10 jquery jquery-selectors

看来使用选择的元素:contains(sub)sub<>不能得到他们的父母.

以下示例应说明我在Safari和Camino(Mac上的Gecko)中遇到的问题:

<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>&lt;foo&gt;</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>
Run Code Online (Sandbox Code Playgroud)

输出是:

1
1
1
0
2
2
1
Run Code Online (Sandbox Code Playgroud)

任何想法为什么第四个0而不是1,或我如何绕过这个?

这个页面提到了在选择器中转义名称,但这也不起作用(另外,我不确定它是否适用).

Tat*_*nen 2

不知道是什么原因导致contains()失败,但您可以使用.filter()以下替代方案:

alert($('body strong').filter(function() {
    return /<foo>/.test( $(this).text() );
}).parent().length);
Run Code Online (Sandbox Code Playgroud)

正如预期的那样返回 1。它很丑,但是有效。