带有转义字符的jQuery查找功能在最新版本中不起作用

Posted

技术标签:

【中文标题】带有转义字符的jQuery查找功能在最新版本中不起作用【英文标题】:jQuery find function with escape characters not working in latest version 【发布时间】:2019-11-21 07:04:30 【问题描述】:

我在 jQuery 3.3.1 和之前的 3.4.0 和 3.4.1 中没有的 find 函数中有一个选择器。我在我使用过 $.parseXML 的 xhtml jQuery 文档对象上使用它。我正在使用完整版的 jQuery。

我查看了 jQuery 更改日志,没有发现任何会影响这一点的内容,以及 github 上的源代码更改。

我已经用 .class 和 #id 测试了 find 并且它可以工作,但是 ID 将是动态的,所以我需要按属性名称搜索。我还需要处理多个跨度,这就是我需要一个 .each(function) 的原因。目前我们正在冻结对 jQuery 3.3.1 的依赖,因为它按预期工作,但在 3.4.0+ 中它甚至没有进入函数。

作品:

const xmlDoc = $.parseXML(`<?xml version="1.0" encoding="windows-1252" ?>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        <html xmlns:dd="DynamicDocumentation">
        <head>
        <title></title>
        </head><body><span dd:drop_list_uuid="9999">mydrop1</span></body></html>`);
const $xml = $(xmlDoc).find('body');
$xml.find('span[dd\\:drop_list_uuid]').each(function()  
  console.log($(this).text())
);
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"&gt;&lt;/script&gt;

不起作用:

const xmlDoc = $.parseXML(`<?xml version="1.0" encoding="windows-1252" ?>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        <html xmlns:dd="DynamicDocumentation">
        <head>
        <title></title>
        </head><body><span dd:drop_list_uuid="9999">mydrop1</span></body></html>`);
const $xml = $(xmlDoc).find('body');
$xml.find('span[dd\\:drop_list_uuid]').each(function()  // This is the line that doesn't work
  console.log($(this).text())
);
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"&gt;&lt;/script&gt;

【问题讨论】:

您的 xml 字符串不在您的示例中的引号中 对不起,我会解决这个问题,实际项目中并非如此。 对不起,我已经添加了整个标题,我认为最小值会起作用。现在应该定义命名空间 我已经用minimal reproducible example 更新了你的问题——你也错过了 【参考方案1】:

问题在这里解决了。 3.4.0+ 消除嘶嘶声。

https://forum.jquery.com/topic/jquery-find-function-with-escape-characters-not-working-in-latest-version#14737000008103091

"新版本的 jQuery 使用 querySelectoAll 没有嘶嘶声。这么多嘶嘶声的语法不再起作用了。

命名空间属性查询可能是在嘶嘶声中实现的。” -杰克雪茄

【讨论】:

以上是关于带有转义字符的jQuery查找功能在最新版本中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot Embedded Derby 在最新版本中不起作用。

Owl carousel 2 animate 在 chrome 最新版本 (V52) 中不起作用

a(警报和哔声)转义序列字符在 C 语言中不起作用

“文件上传”功能在带有 HTTP2 采样器的 Jmeter 中不起作用 [使用所有版本的 JMETER]

查找下一个()在 jquery 中不起作用

DOM操作在用户代理字符串功能中不起作用