Jquery className为null或不是IE8中的对象

Jquery className为null或不是IE8中的对象,jquery,css,Jquery,Css,我在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 .requi

我在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());
        }
    }
});

只需替换您的代码:

var classes = $(this).className.split(/\s+/);
为此:

var classes = this.className.split(/\s+/);

实际上,
className
是一个DOM属性。它不是jQuery对象的属性。

只需替换代码即可:

var classes = $(this).className.split(/\s+/);
var classes = $(this).className.split(/\s+/);
为此:

var classes = this.className.split(/\s+/);
实际上,
className
是一个DOM属性。它不是jQuery对象的属性

var classes = $(this).className.split(/\s+/);
我不记得
className
是一个有效的jQuery方法
.attr('class')
可能是您想要使用jQuery对象所需要的

var classes = $(this).className.split(/\s+/);
关于如何在没有jQuery的情况下做到这一点,其他答案已经发布

$(this)
不同于
this
,因为第一个给你一个jQuery对象,第二个给你一个DOM对象

我不记得
className
是一个有效的jQuery方法
.attr('class')
可能是您想要使用jQuery对象所需要的

var classes = $(this).className.split(/\s+/);
关于如何在没有jQuery的情况下做到这一点,其他答案已经发布

$(this)
不同于
this
,因为第一个给你一个jQuery对象,第二个给你一个DOM对象。

使用以下两种方法之一:

var classes = this.className.split(/\s+/);
或者使用jQuery方法attr:

var classes = $(this).attr('class').split(/\s+/);
使用以下两种方法之一:

var classes = this.className.split(/\s+/);
或者使用jQuery方法attr:

var classes = $(this).attr('class').split(/\s+/);

你说这在IE8中被破坏了,但是
$(这个)。className
完全错误,不应该在任何浏览器中工作。你说这在IE8中被破坏了,但是
$(这个)。className
完全错误,不应该在任何浏览器中工作。