我在find函数中有一个选择器,该选择器可用于jQuery 3.3.1,而在3.4.0和3.4.1中则没有。我在使用$ .parseXML的xhtml jQuery文档对象上使用它。我正在使用完整版的jQuery。
我已经查看了jQuery changelogs,没有发现应该影响它的内容,以及github上的源代码更改。
我已经用.class和#id测试了查找结果,它可以工作,但是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())
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
不起作用:
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())
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
答案 0 :(得分:0)
问题在这里解决了。 3.4.0+消除了嘶嘶声。
“新版本的jQuery使用querySelectoAll时没有发出嘶嘶声。许多嘶嘶声语法不再起作用。
一个命名空间的属性查询可能是在嘶嘶声中实现的。” -杰克雪茄