javascript - 通过 jquery 添加的数据属性不可用于选择元素

标签 javascript jquery

我有以下 html 代码。

<ul>
    <li  data-details="li1">first</li>
    <li  >second</li>
</ul>

请注意,对于第一个元素,我添加了带有值的 data-details 属性。 对于第二个 li 元素,我使用 jquery 添加相同的元素。这是我的 JavaScript 代码。

$(document).ready(function()
                  {
                      $("ul li:nth-child(2)").data("details","li2");
                      console.log($("ul li:nth-child(2)").data()); //data can be verified using this
                      alert($("ul li[data-details=li1]").length); //resulting in alert 1
                      alert($("ul li[data-details=li2]").length); //resulting in alert 0
                  });

数据已添加,我们可以通过检查控制台来验证。但是,我无法根据 jquery 添加的 data-details 值来选择元素。为什么会这样?

这是 jsfiddle link

最佳答案

使用 .data() 设置项目设置属性。如果您在 HTML 中设置属性或使用类似 .attr() 的属性,您可以使用属性选择器。如果您需要查找具有 .data() 的元素设置,需要使用.filter() :

var el = $("selector").filter(function () {
    return typeof $(this).data("whatever") !== undefined;
});
console.log(el.length);

请注意,这不是相反的相同行为。当您在 HTML 中或使用 .attr() 设置属性时, 任何 data-*属性将自动放入 .data()通过 jQuery。

演示: http://jsfiddle.net/zTsS4/2/

请注意在演示中如何在 HTML 中设置 <li> 的属性。 ,另一个设置为 .data() 。然后.filter()两者都找到。

关于javascript - 通过 jquery 添加的数据属性不可用于选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16454241/

相关文章:

javascript - 悬停效果子类别显示并向右侧滑动

jquery - IE8 Jquery show() div 增加父 div 的大小

javascript - 仅在需要时更新 HTML

javascript - 如果 <p> 中的文本是 X 然后 addClass

javascript - 我想验证验证js中的最大数量大于最小数量

javascript - 如何在 Taiko JS 中编写异步动态 dropDown

javascript - 如何在 JavaScript 中以各种可能的方式动态创建新的 div、更改它、移动它、修改它?

javascript - jQuery轮播制作响应

javascript - 我有一个多边形,并且我知道所有 4 个点。如何使用 OpenLayers 确定给定点是否位于多边形内部?

javascript - 协作式 JSON 查看器/解析器