首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery附加删除IE和Edge中的字符

JQuery附加删除IE和Edge中的字符
EN

Stack Overflow用户
提问于 2019-04-18 19:46:43
回答 2查看 26关注 0票数 0

使用JQuery时,当我遍历数组并将值附加到UL时,它在Chrome和Firefox中工作得很好。在IE和Edge中,如果它以一个数字开头,后面跟着一个破折号或下划线,它就会截断这个值。

代码语言:javascript
复制
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
  }))
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="list1"></ul>

预期结果:

代码语言:javascript
复制
<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>

实际结果:

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-18 19:57:47

不要使用value。根据规格说明li元素的值必须是整数:

如果存在value属性,则必须是有效整数。当li的列表所有者是ol元素时,它用于确定列表项的序号值。

IE和Edge通过从值中提取整数前缀来强制执行这一要求;只有当值不以整数开头时,才会保留该值。

如果需要将自定义数据附加到元素,则使用data-XXX属性,在创建元素时可以在jQuery中使用data:属性设置这些属性,并且可以使用.data()方法获取和更新这些属性。

代码语言:javascript
复制
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"));
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="list1"></ul>

票数 1
EN

Stack Overflow用户

发布于 2019-04-18 22:40:19

作为一个FYI,我最终向LI添加了一个数据值属性,而不是使用jQuery.data()。

代码语言:javascript
复制
$.each(result, function (key, value) {
    listItems.append($('<li/>', {
      text: value
    }).attr("data-value", value))
  }
);

再次感谢你的帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55752835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档