繁体   English   中英

在JQuery .each中使用$(this)

[英]Using $(this) in JQuery .each

以前从来没有问过问题,因为我通常可以在这里四处寻找答案,但这让我很困惑。 我不假装自己是任何JS / JQ专家,但我对两者都相当熟悉。 我想做的是将一个预定义的CSS类设置为表单中的一组文本输入元素(不幸的是,我正在使用的Django版本无法为我完成此操作,因此我目前无法将其升级为我没有时间):

function setBsCss() {
var fields = $("input[type='text'], textarea").serializeArray();
jQuery.each(fields, function(i, field){
    if ((this.name != "csrfmiddlewaretoken") && (this.name.indexOf("recaptcha") == -1)) {
        $(this).addClass('someclass');
    }
});

}

我没有收到任何错误,但是没有将类添加到元素中。 我可以更改代码,仅使用名称或ID选择器,但我希望尽可能将类应用于对象本身。

任何帮助,不胜感激!

我可以确认行为,但我不理解。

为了解决这个问题,您可以避免将jQuery对象转换为数组,而只需使用.each()而不是jQuery.each()

$("input[type='text'], textarea").each(function (i, field) {
    if ((this.name != "csrfmiddlewaretoken") && (this.name.indexOf("recaptcha") == -1)) {
        $(this).addClass('someclass');
    }
});

查看完整的JSFiddle

更新:

问题出在.serializeArray()

.serializeArray()
描述 :将一组表单元素编码为名称和值的数组。
.serializeArray()方法创建一个JavaScript对象数组,准备将其编码为JSON字符串。

serializeArray() 创建DOM元素的数组,但只有阵列name / value对。 所以, this是指一个对象

{
    name: "other",
    value: "somevalue"
}

addClass()一起使用时,其行为不符合预期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM