Javascript 从数据获取计数-*属性不起作用,为什么?
每次单击给定的Javascript 从数据获取计数-*属性不起作用,为什么?,javascript,jquery,Javascript,Jquery,每次单击给定的th时,我都试图获取数据计数属性,下面是我的操作方法。由于某种原因,data\u id的值总是undefined,我无法找到原因。一定很傻 我错过了什么 $(.s_头”)。单击(函数(){ var column_id=$(this.attr('id'); var data_id=$('#'+列_id).data('count'); 控制台日志(列id); console.log(数据标识); 如果(数据标识%2==0){ console.log(“偶数”); }否则{ 控制台日志
th
时,我都试图获取数据计数
属性,下面是我的操作方法。由于某种原因,data\u id
的值总是undefined
,我无法找到原因。一定很傻
我错过了什么
$(.s_头”)。单击(函数(){
var column_id=$(this.attr('id');
var data_id=$('#'+列_id).data('count');
控制台日志(列id);
console.log(数据标识);
如果(数据标识%2==0){
console.log(“偶数”);
}否则{
控制台日志(“奇数”);
}
$(“#”+列id).data('count',data_id+1);
});代码>
第1列
第2列
第3列
我不知道为什么.data()
不起作用,但是您可以使用这个.dataset
来简化代码,因为.data()
将把值存储在jQuery的全局对象中,而不是更新dom
$(.s_头”)。单击(函数(){
var count=parseInt(this.dataset.count);
log(计数%2==0?“偶数”:“奇数”);
this.dataset.count++;
});代码>
第1列
第2列
第3列
问题在于您的jQuery版本。从:
从jQuery1.4.3HTML5数据开始,属性将自动拉入jQuery的数据对象。jQuery1.6中更改了使用嵌入破折号的属性处理,以符合W3CHTML5规范
将代码段切换到1.4.3而不是1.4.1可以解决此问题,以便.data('count')
返回'0'
。请注意,您在设置数据时仍然存在键入错误(您使用的是.data('counter',…)
而不是.data('count',…)
.data()
仅在版本1.4.3或更高版本中可用。请更新您的jquery版本或使用.attr(“data count”)
$(.s_头”)。单击(函数(){
var column_id=$(this.attr('id');
var data_id=$('#'+列_id).attr('data-count');
控制台日志(列id);
console.log(数据标识);
如果(数据标识%2==0){
console.log(“偶数”);
}否则{
控制台日志(“奇数”);
}
$(“#”+列id).data('计数器',数据id+1);
});
第1列
第2列
第3列
改用var data_id=$(“#”+column_id).attr('data-count');
$(.s_头”)。单击(函数(){
var column_id=$(this.attr('id');
var data_id=$('#'+列_id).attr('data-count');
控制台日志(列id);
console.log(数据标识);
如果(数据标识%2==0){
console.log(“偶数”);
}否则{
控制台日志(“奇数”);
}
$(“#”+列id).data('计数器',数据id+1);
});
第1列
第2列
第3列
您正在获取$(this)
的id,并搜索与提取的id对应的元素,即$(this)
?@Phiter不确定您在问什么,您能详细说明一下吗?查找是不必要的。id查找正在查找刚刚单击的元素。