gpt4 book ai didi

jquery - :contains selector in IE8 的问题

转载 作者:行者123 更新时间:2023-12-01 07:02:21 25 4
gpt4 key购买 nike

我正在 jQuery 中使用以下选择器:

$("div[id^=WebPartWPQ]:has(table.ms-sitedirresultssort) td:contains(' : ')").closest('div')

换句话说:选择 ID 以 WebPartWPQ 开头的 div,该 div 具有类 ms-sitedirresultssort 的表,该表的 td 包含文本 :。这个问题的最后是 SharePoint 呈现的 HTML。

该选择器在 Firefox 3.5 下完美运行,但在 Internet Explorer 8 下则不然。我正在使用 hide() 函数进行测试。

我已将范围缩小到选择器的 td:contains(' : ') 部分。在 Firebug Lite 中运行 $("td:contains(' : ')") 会转储出一整套函数,就像某些内容无效一样。所有其他选择器在 FB Lite 中都工作正常。

我尝试使用 jQuery 1.3.2 和 jQuery 1.4rc1 但没有成功。这是 jQuery 中的一个错误吗?如果是的话,是否有一张票(我找不到)?关于如何最好地解决这个问题有什么想法吗?

HTML:

<div style="" helpmode="1" helplink="/_layouts/help.aspx" allowdelete="false" class="ms-WPBody"
width="100%" id="WebPartWPQ4" haspers="false" webpartid="2ae67b12-82db-4238-8be9-cd4b39cbd15a">
<table cellspacing="0" cellpadding="0" border="0" width="100%" xmlns:crwp="urn:schemas-microsoft-com:CategoryResultsWebPart"
xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" xmlns:x="http://www.w3.org/2001/XMLSchema"
class="ms-sitedirresultssort">
<tbody>
<tr>
<td width="100%" />
<td nowrap="">
<a href="#title">Sort by Title </a><span>| </span><a href="#url">Sort by Url </a>
</td>
</tr>
</tbody>
</table>
<table cellspacing="0" cellpadding="0" border="0" width="100%" xmlns:crwp="urn:schemas-microsoft-com:CategoryResultsWebPart"
xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" xmlns:x="http://www.w3.org/2001/XMLSchema"
class="ms-sitedirresultspaging">
<tbody>
<tr>
<td> : </td>
</tr>
</tbody>
</table>
<table cellspacing="0" cellpadding="0" border="0" width="100%" xmlns:crwp="urn:schemas-microsoft-com:CategoryResultsWebPart"
xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" xmlns:x="http://www.w3.org/2001/XMLSchema"
class="ms-sitedirresultsbody" id="table2">
<tbody>
<tr>
<td valign="top">
<img alt="" src="/_layouts/images/lstbulet.gif" />
</td>
<td width="100%" class="ms-sitedirresultstitle">
<a href="http://site/cd10/_layouts/mysite.aspx?Redirect=1">Setup MySite</a>
</td>
</tr>
<tr>
<td />
<td width="100%" class="ms-sitedirresultsurl">
<a dir="ltr" href="http://site/cd10/_layouts/mysite.aspx?Redirect=1">http://site/cd10/_layouts/mysite.aspx?Redirect=1</a>
</td>
</tr>
</tbody>
</table>
</div>

最佳答案

<td>
:
</td>

在任一浏览器中都不包含 :,因为尾随换行符与空格不同。但是:

<td> : </td>

现在在 IE 和 Firefox 中确实给出了不同的结果。 contains 在 IE 中不匹配,因为它的解析器已经默默地丢弃了空格,就像 IE 喜欢做的那样。如果您查看 innerHTML,您会看到:

<TD>: </TD>

不出所料,这与选择器不匹配。

因此请小心使用 contains 和空格,因为 IE 的 HTML 解析器一如既往地古怪。

就我个人而言,我会尽量避免使用非标准 jQuery 选择器,例如 :has,尤其是 :contains,因为它们需要 jQuery 来完成大量缓慢的工作。另一方面,标准 CSS2-3 选择器可以在具有 Selectors-API 支持的较新浏览器(包括 IE8)中传递给浏览器自己的选择器引擎。

怎么样:

$('.ms-sitedirresultssort ~ table td').filter(function() {
return this.text().match(/(^|\s):(\s|$)/);
})

~ 是任意后续兄弟的 CSS3 选择器; IE8确实支持。

关于jquery - :contains selector in IE8 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2061188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com