[英]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()方法创建一个JavaScript对象数组,准备将其编码为JSON字符串。
serializeArray()
不创建DOM元素的数组,但只有阵列name
/ value
对。 所以, this
是指一个对象
{
name: "other",
value: "somevalue"
}
与addClass()
一起使用时,其行为不符合预期。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.