首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery如何基于数据属性值(v2)找到一个元素?

jQuery如何基于数据属性值(v2)找到一个元素?
EN

Stack Overflow用户
提问于 2014-04-18 19:50:48
回答 2查看 232关注 0票数 0

我读过这个,所以这不是复制的。所有建议的解决方案都不起作用,jQuery如何基于数据属性值找到一个元素?

以下是我在Chrome控制台上所做的工作:

代码语言:javascript
复制
$('table#ct_ennemies_2 td').each(function() {
    var t=$(this).data('to-shoot'); console.log(t == "1")
});

然后我得到一个结果:一个单元格被标记为data('to-shoot') = 1。太棒了。现在,如果我试图查找by数据属性,如下所示:

代码语言:javascript
复制
$('table#ct_ennemies_2 td[to-shoot="1"]').each(function() {
    console.log($(this))
});

我得到了一个空洞的结果:

代码语言:javascript
复制
[]

如果我试着的话

代码语言:javascript
复制
$('table#ct_ennemies_2 td[to-shoot=1]').each(function() {
    console.log($(this))
});

我得到了一个空洞的结果:

代码语言:javascript
复制
[]

在Chrome的控制台日志中,您可以这样做:

代码语言:javascript
复制
>> $('table#ct_ennemies_2 td').first().data('to-shoot','1');
[<td ...blablah >@</td>]
>> $('table#ct_ennemies_2 td').first().data();
Object {toShoot: "1"}
>> $('table#ct_ennemies_2 td').first().data('to-shoot');
"1"
>> $('table#ct_ennemies_2 td[to-shoot="1"]');
[]
>> $('table#ct_ennemies_2 td[to-shoot]');
[]
>> $('table#ct_ennemies_2 td[data-to-shoot]').each(function() { console.log($(this)) });
[]
>> $('table#ct_ennemies_2 td[data-to-shoot=1]').each(function() { console.log($(this)) });
[]
>> $('table#ct_ennemies_2 td[data-to-shoot="1"]').each(function() { console.log($(this)) });
[]
>> $('table#ct_ennemies_2 td[data-toShoot="1"]').each(function() { console.log($(this)) });
[]
>> $('table#ct_ennemies_2 td[toShoot="1"]').each(function() { console.log($(this)) });
[]
>> $('table#ct_ennemies_2 td[toShoot=1]').each(function() { console.log($(this)) });
[]
>> td = $('#ct_ennemies_2 td').filter(function() {
>>   return $(this).data('to-shoot') === 1;
>> });
[]
>> td
[]

我的问题是:如何正确地应用一个过滤器,该过滤器返回包含数据td的预期to-shoot=1

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-18 19:53:13

data属性以data-开头

代码语言:javascript
复制
$('table#ct_ennemies_2 td[data-to-shoot=1]')

注意事项:只有当您在标记中或通过attr('data-to-shoot', 1)手动添加数据属性时,这才有效。如果它是通过data('to-shoot', 1)应用的,您将需要使用账单‘应答。

例琴

小提琴内容:

代码语言:javascript
复制
<div class="test"></div>

$(function(){
  var d = $('div.test');

  d.data('to-shoot', 1);

  alert($('div[data-to-shoot=1]').length); // 0

  d.attr('data-to-shoot', 1);

  alert($('div[data-to-shoot=1]').length); // 1

  var divs = $('div').filter(function(){
    return $(this).data('to-shoot') == 1; 
  });

  alert(divs.length); // 1
});
票数 2
EN

Stack Overflow用户

发布于 2014-04-18 19:55:38

我将使用filter,因为.data不将数据应用于实际属性,而是应用于内部哈希表。

代码语言:javascript
复制
var $td = $('#ct_ennemies_2 td').filter(function() {
  return $(this).data('to-shoot') === 1;
});

此外,宠物恼怒,table之前的id选择是不必要的。

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

https://stackoverflow.com/questions/23161234

复制
相关文章

相似问题

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