Функция поиска jQuery с escape-символами не работает в последней версии - PullRequest
0 голосов
/ 11 июля 2019

У меня есть селектор в функции поиска, который работает с jQuery 3.3.1, а до этого нет в 3.4.0 и 3.4.1.Я использую его в объекте документа xhtml jQuery, на котором я использовал $ .parseXML.Я использую полную версию jQuery.

Я изучил журналы изменений jQuery и не вижу ничего, что могло бы повлиять на это, а также изменений исходного кода на github.

Я проверил поиск с помощью .class и #id, и он работает, но идентификаторы будут динамическими, поэтому мне нужно искать по имени атрибута.Также мне нужно будет управлять несколькими диапазонами, поэтому мне нужен .each (функция).В настоящее время мы замораживаем нашу зависимость от 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>

1 Ответ

0 голосов
/ 11 июля 2019

Проблема решена здесь. 3.4.0+ избавляется от шипения.

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

"В новых версиях jQuery используется querySelectoAll без sizzle. Поэтому многие синтаксисы sizzle больше не работают.

Запрос атрибута пространства имен был, вероятно, реализован в sizzle. " -jakecigar

...