我有一个需要使用gridster.js的家庭作业,我希望能够检查列表项的数据行属性是否等于某个值,并且其data-col属性等于一个值。如果它们等于所需的值并且它们的坐标与预期位置匹配,我想在该列表项“true”中添加一个类。
我目前正在尝试实现这一目标的列表项目的初始data-row
为2
,data-col
为1
,我想检查它是否有已移至data-row
1
和data-col
1
。我试过的代码就是:
if ($('.hi').data({row: 1, col: 1})) $('.hi').addClass('true'); }
但是,无论位置如何,此语句都会导致添加true类。理想情况下,我要做的是检查每个列表项的data-row
和data-col
值是否等于正确的值,以及它们是否添加了true类。然后,我打算使用.each
方法检查每个列表项是否有true
类,如果有,我想更改包含gridster无序的div的背景颜色名单。
答案 0 :(得分:2)
那是因为你使用data
作为setter返回一个jQuery对象,而在JavaScript中,一个对象是一个真正的值,除了data
只返回jQuery集合中第一个匹配元素的值,您可以使用filter
方法:
$('.hi').filter(function(){
var $this = $(this);
return $this.data('row') === 1 && $this.data('col') === 1;
}).addClass('true');