javascript - jquery 在更新元素上的数据标签后使用数据标签选择器

标签 javascript jquery tags

我希望能够获取与 jQuery 中的选择器匹配的一组元素。我有带有数据标签属性的 HTML,这些属性可以通过 jQuery 使用 .data(key, value) 方法动态更改。

但是,在动态更新元素的数据标记后,我似乎无法再使用选择器来获取具有更新值的该元素。它仍然返回旧值。

我有一个 JSFiddle 设置来演示这个问题: https://jsfiddle.net/o6pnvqgv/1/

这里是示例代码:

<span id="example" data-tag="5"></span>

<div id="result"></div>
<div id="result2"></div>

$(document).ready(function(){
    var $example = $('#example');

    $('#result').html($example.data('tag'));
    $example.data('tag', 7);

    $('#result').html("elements that have tag 5: " + $('[data-tag="5"]').length);

    $('#result2').html("elements that have tag 7: " + $('[data-tag="7"]').length);
});

结果:

具有标签 5: 1 的元素 具有标签 7: 0 的元素

我知道我可以使用each循环并通过if语句比较每个元素的数据。但我希望能够通过新的设置数据标签值查询所有元素并获取这些结果。

有什么帮助吗?

最佳答案

您的问题在这里得到解答:

jQuery .data() Not Updating DOM

$('#foo li[data-my-key="54321"]') 是一个属性选择器。

使用.data(..)会更改元素的属性,如果不使用过滤器就无法选择这些元素。

如果您想获取具有特定属性的所有元素,您可以这样做(使用 filter(...) ):

$('#foo li').filter(function(index) {
  return $(this).data('my-key') === 54321;
}); //returns all `#foo li` with data[my-key] === 54321
<小时/>

请参阅此处了解更多信息:.prop() vs .attr()

关于javascript - jquery 在更新元素上的数据标签后使用数据标签选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30810916/

相关文章:

javascript - 铯.js : prevent interpolation

jquery - jQuery 中触发多个按键和按住事件的方法

javascript - 退格键在 Mozilla 浏览器上我的表单的文本区域中不起作用

javascript - 我如何在jquery中获取预约时间(从时间,到时间)

javascript - 当你有来自后端的参数时,如何使用不显眼的 JavaScript?

javascript - 如何将两个单独的查询传递给 promise 链末尾的回调函数?

javascript - 如何在 Angular 中将按钮放到 mat-table 中

javascript - 使用Javascript修改内部标签的CSS规则

svn - 如何从 Teamcity 中触发构建中排除标签文件夹?

c++ - 解析xml到对象,打印标签之间的内容-QT