Jquery data()不返回布尔值;为什么?

Jquery data()不返回布尔值;为什么?,jquery,Jquery,我是一个非常没有经验的jQuery程序员,在我的小脚本中找不到bug。你能帮忙吗 我想强调一个复选框,如果它的状态与初始值不同。该初始值存储为data init属性。为选中和未选中输入生成的html如下所示: <td><input checked data-init id="controls-0-modeU" name="controls-0-modeU" type="checkbox" value="y"></td> <td><input

我是一个非常没有经验的jQuery程序员,在我的小脚本中找不到bug。你能帮忙吗

我想强调一个复选框,如果它的状态与初始值不同。该初始值存储为
data init
属性。为选中和未选中输入生成的html如下所示:

<td><input checked data-init id="controls-0-modeU" name="controls-0-modeU" type="checkbox" value="y"></td>

<td><input id="controls-1-modeU" name="controls-1-modeU" type="checkbox" value="y"></td>

但是
$init
的值要么是
未定义的
(对于最初未检查的输入),要么是空字符串(对于最初检查的输入)。他们两人的评价都是错误的。为什么我不能改为true/false?

您可以检查元素是否具有如下属性:

if (!!$(this).attr("data-init")) {
  // its there
}
else {
  // its not
}

jQuery不会将数据属性视为布尔属性(如checked、readonly等),因此必须给它一个值

<td><input checked data-init="true" id="controls-0-modeU" name="controls-0-modeU" type="checkbox" value="y"></td>

<td><input  data-init="false" id="controls-1-modeU" name="controls-1-modeU" type="checkbox" value="y"></td>

复选框上没有
data init
属性…并且有多个复选框,您的代码不完整。您的
data init
没有任何值。是否只为选中的
复选框设置一个空属性?您想要实现什么?您是否尝试过
data init=“false”
?你的属性实际上是empty@VPfB是的,但是
数据
是一个自定义属性集,可以包含任何内容。它不是布尔属性,请参见
未定义的
,这样您就可以将两者都捕获为“falsy”值。我不确定OP是否想要这样做,尤其是考虑到链接的答案。他不是问他是否检查得到的值,而是问他为什么没有得到预期值
<td><input checked data-init="true" id="controls-0-modeU" name="controls-0-modeU" type="checkbox" value="y"></td>

<td><input  data-init="false" id="controls-1-modeU" name="controls-1-modeU" type="checkbox" value="y"></td>
var $init = $(this).is("[data-init]");