JQuery Append удаляет символы в IE и Edge

Используя JQuery, когда я перебираю массив и добавляю значения в UL, он отлично работает в Chrome и Firefox. В IE и Edge он усекает значение, если оно начинается с числа, за которым следует тире или подчеркивание.

var listItems = $('#list1');

var result = ['1-2-3', '1_2_3', 'a-b-c', 'a_b_c'];

$.each(result, function(key, value) {
  listItems.append($('<li/>', {
    value: value,
    text: value
  }))
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id = "list1"></ul>

Ожидаемый результат:

<ul>
<li value = "1-2-3">1-2-3</li>
<li value = "1_2_3">1_2_3</li>
<li value = "a-b-c">a-b-c</li>
<li value = "a_b_c">a_b_c</li>
</ul>

Фактический результат:

<ul>
<li value = "1">1-2-3</li>
<li value = "1">1_2_3</li>
<li value = "a-b-c">a-b-c</li>
<li value = "a_b_c">a_b_c</li>
</ul>
Поведение ключевого слова "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) для оценки ваших знаний,...
0
0
25
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Не используйте value. Согласно Технические характеристики, значение элемента li должно быть целым числом:

The value attribute, if present, must be a valid integer. It is used to determine the ordinal value of the list item, when the li's list owner is an ol element.

IE и Edge обеспечивают соблюдение этого требования, извлекая целочисленный префикс из значений; они оставляют значение в покое, только если оно не начинается с целого числа.

Если вам нужно прикрепить пользовательские данные к элементу, используйте атрибуты data-XXX, которые можно установить в jQuery с помощью свойства data: при создании элемента, и вы можете получить и обновить с помощью метода .data().

var listItems = $('#list1');

var result = ['1-2-3', '1_2_3', 'a-b-c', 'a_b_c'];

$.each(result, function(key, value) {
  listItems.append($('<li/>', {
    data: {
      value: value
    },
    text: value
  }))
});

$("li").click(function() {
  alert($(this).data("value"));
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id = "list1"></ul>

Мы оба чему-то научились из этого, я не знал об этом специальном использовании атрибута.

Barmar 18.04.2019 22:12

К вашему сведению, я добавил атрибут data-value в LI вместо использования jQuery.data().

$.each(result, function (key, value) {
    listItems.append($('<li/>', {
      text: value
    }).attr("data-value", value))
  }
);

Спасибо еще раз за вашу помощь!

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