className null或不是IE8中的对象

时间:2013-10-21 07:59:38

标签: 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 .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());
        }
    }
});

3 个答案:

答案 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对象。