我在IE8中运行以下代码,我得到className为null或不是对象。任何帮助
JS:
var validators = {
allowalphanum: function (val) {
return /^[a-z0-9]+$/i.test(val);
},
allownospace: function (val) {
return !/\s/.test(val);
}
}
$('#submit_form .required').blur(function () {
var returnVal1 = true;
var classes = $(this).className.split(/\s+/);
for (var p in classes) {
if (classes[p] in validators) {
returnVal1 = returnVal1 & validators[classes[p]](input.val());
}
}
});
答案 0 :(得分:3)
只需替换您的代码:
var classes = $(this).className.split(/\s+/);
用这个:
var classes = this.className.split(/\s+/);
实际上className
是一个DOM属性。它不是jQuery对象的属性。
答案 1 :(得分:2)
使用vanilla js:
var classes = this.className.split(/\s+/);
或使用jQuery方法attr:
var classes = $(this).attr('class').split(/\s+/);
答案 2 :(得分:1)
var classes = $(this).className.split(/\s+/);
我不记得className
是一个有效的jQuery方法。如果你想使用jQuery对象,你可能需要.attr('class')
。
如果没有jQuery,已经发布了其他答案。
$(this)
与this
不同,因为第一个给你一个jQuery对象,第二个给你一个DOM对象。