Javascript 在JQuery.each中使用$(this)
以前从来没有问过这个问题,因为我通常可以通过在这里打猎找到答案,但这让我感到困惑。我并不假装是任何类型的JS/JQ专家,但我对两者都相当熟悉。我试图做的是将预定义的CSS类设置为表单中的一组文本输入元素(不幸的是,我使用的Django版本无法为我做到这一点,而且我目前无法升级,因为我没有时间): } 我没有得到任何错误,但该类只是没有被添加到元素中。我可以更改代码,只需使用名称或ID选择器,但如果可能的话,我更愿意将类应用于对象本身Javascript 在JQuery.each中使用$(this),javascript,jquery,css,this,addclass,Javascript,Jquery,Css,This,Addclass,以前从来没有问过这个问题,因为我通常可以通过在这里打猎找到答案,但这让我感到困惑。我并不假装是任何类型的JS/JQ专家,但我对两者都相当熟悉。我试图做的是将预定义的CSS类设置为表单中的一组文本输入元素(不幸的是,我使用的Django版本无法为我做到这一点,而且我目前无法升级,因为我没有时间): } 我没有得到任何错误,但该类只是没有被添加到元素中。我可以更改代码,只需使用名称或ID选择器,但如果可能的话,我更愿意将类应用于对象本身 非常感谢您的帮助 我可以证实这种行为,但我不明白 要解决这个问
非常感谢您的帮助 我可以证实这种行为,但我不明白 要解决这个问题,可以避免将jQuery对象转换为数组,而只使用
$(“输入[type='text'],textarea”)。每个(函数(i,字段){
if((this.name!=“csrfmiddlewaretoken”)&&(this.name.indexOf(“recaptcha”)=“1)){
$(this.addClass('someclass');
}
});
看到全部
更新:
问题在于
.serializeArray()说明:将一组表单元素编码为名称和值的数组。
.serializeArray()方法创建一个对象的JavaScript数组,可以将其编码为JSON字符串
serializeArray()
不创建DOM元素数组,而只创建名称
/值
对数组。所以,这个
指的是一个对象
{
名称:“其他”,
值:“somevalue”
}
当与
addClass()
一起使用时,它的行为与预期不符。您希望将类添加到dom元素,但使用serializeArray()生成字段数组而不是jq对象选择器。现在看起来很简单!你完全正确。非常感谢您的澄清,让它发挥作用:)
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');
}
});