我非常缺乏经验的jQuery程序员无法在我的琐碎脚本中找到错误。你能帮忙吗?
如果其状态与初始值不同,我想强调一个复选框。该初始值存储为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>
在接受的答案中:Retrieve boolean data from data attribute in jquery有:&#34; jQuery .data()
方法很聪明地识别布尔值和数值并将它们转换为原生类型&#34 ;.这就是我想要的。
我的脚本以:
开头$(document).ready(function(){
$("td input:checkbox").change(function(){
var $init = $(this).data("init")
但是$init
的值是undefined
(对于最初未经检查的输入)或空字符串(对于最初检查过)。他们两个都评价为假。为什么我没有得到真/假呢?
答案 0 :(得分:3)
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>
如果你想保留你的标记,你将不得不自己做重物
var $init = $(this).is("[data-init]");
答案 1 :(得分:0)
你可以检查元素是否具有如下属性:
if (!!$(this).attr("data-init")) {
// its there
}
else {
// its not
}