在jQuery中出现未捕获的TypeError: element.removeClass不是一个函数

11

我使用这个示例来验证我的表单,但是出现了以下错误:

Uncaught TypeError: element.removeClass is not a function,提示removeClass()不是一个函数!! 我很困惑。

我的JS代码:

$(function () {
            var form = $('#CompanyStep')
              , formData = $.data(form[0])
              , settings = formData.validator.settings
              , oldErrorPlacement = settings.errorPlacement
              , oldSuccess = settings.success;

            settings.errorPlacement = function (label, element) {

                debugger;
                oldErrorPlacement(label, element);

                label.parents('.form-group').addClass('has-danger');
                label.addClass('text-danger');
                element.addClass('form-control-danger');
            };

            settings.success = function (label, element) {

                debugger;

                label.parents('.form-group').removeClass('has-danger');
                label.parents('.form-group').addClass('has-success');
                element.removeClass('form-control-danger');
                element.addClass('form-control-success');


                oldSuccess(label, element);
            };
        });

什么是元素?这个方法叫什么?我猜它不是一个jQuery对象。 - epascarello
@Loaf 那么在上面的代码中没有显示调用该方法,你是如何得到这个结果的呢?element 是一个参数,我们也看不到它是如何设置的。 - epascarello
@loaf 谢谢你,我的朋友,已经修复好了 :) - Soheil Alizadeh
@SoheilAlizadeh 不客气 :) - Loaf
请使用.removeClass,而不是.RemoveClass。 - Andrew
显示剩余4条评论
1个回答

23

发布我的评论作为答案

相反,尝试:

$(element).removeClass('form-control-danger');

好的,但这为什么有效呢? - jarrodwhitley
@Telarian,这是因为他们在setting.success中传递给element的不是jQuery对象,所以将其包装在$()周围允许您使用removeClass(),这是一个jQuery函数。我不能百分之百确定,但它可能只是一个DOM对象。jQuery将任何DOM对象传递到主要的$()函数中,使您可以在其上使用jQuery函数等。 - Loaf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接