Селектор jQuery для массива атрибутов данных

Вот этот html-код:

<div class = "wcpa_form_outer" data-attrrelated = "[&quot;wcpa-select-1658734650073&quot;]">

для которого я пытаюсь добавить к нему html. Я пробовал разные подходы, но ни один из них не работал.

jQuery('.wcpa_form_outer[data-attrrelated = "[&quot;wcpa-select-1658734650073&quot;]"]').append('some html here');

или

jQuery('.wcpa_form_outer[data-attrrelated = "[wcpa-select-1658734650073]"]').append('some html here');

или

jQuery('.wcpa_form_outer').data('attrrelated').append('some html here');

любые подсказки?

Первое утверждение в вашем вопросе работает...

KooiInc 18.11.2022 19:38

@Kooilnc & @ Tibrogargan в моей части html была ошибка. я обновил исходный вопрос с ним

Meni 18.11.2022 19:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Проблема может заключаться в &quot; и/или [] в значении атрибута. Удалите его или попробуйте использовать часть (наиболее важную часть?) значения атрибута:

$('[data-attrrelated* = "1658734650073"]')
  .append('some html here!');
$('[data-attrrelated* = "wcpa-select-165873465007"')
  .append('<br>some html here too!');
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class = "wcpa_form_outer" data-attrrelated = "[&quot;wcpa-select-1658734650073&quot;]"></div>
Ответ принят как подходящий

Проблема в том, что вы используете объект HTML &quot; в своем атрибуте. Это переводится в буквальную цитату. JQuery не выполняет преобразование сущностей, поэтому он буквально ищет строку [&quot;wcpa-select-1658734650073&quot;] с амперсандами и всем остальным, а не ["wcpa-select-1658734650073"], которая является фактическим значением в вашем атрибуте.

Вы можете обойти это, используя один из следующих методов (после перевода Entity в кавычки в вашем коде).

  1. Используйте селектор CSS «содержит» для вашего атрибута ( attr*=value ) (продемонстрировано ответом KooiInc) или
  2. Используйте шаблон строки, который позволит вам встроить оба типа кавычек в вашу строку и получить точное совпадение ( attr=value ), как показано ниже.
  3. Создание строкового значения, содержащего кавычки, с помощью конкатенации строк (например, '["' + value + '"]' )
  4. Используйте функцию decodeEntities из этого ответа, чтобы перевести значение вашего атрибута перед попыткой поиска (не проверено, и ему 10 лет)

jQuery(`.wcpa_form_outer[data-attrrelated='["wcpa-select-1658734650073"]']`).append('foo')
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "wcpa_form_outer" data-attrrelated = "[&quot;wcpa-select-1658734650073&quot;]">append here: 
</div>

Другие вопросы по теме