我有这段代码
if($('input[type="text"]').val() == ''){
$(this).css('width', '20%');
}
HTML
<input id="id_nombre" maxlength="100" name="nombre" placeholder="Inserte su nombre" type="text">
<input id="id_email" maxlength="150" name="email" placeholder="Inserte su E-Mail" type="text">
这不起作用,但如果我写输入而不是它,它的工作原理。似乎这是指向整个HTML
答案 0 :(得分:5)
$(this)
指的是函数最外层范围的调用者,它可能是您的文档或其他容器(没有上下文很难说)。 if
阻止不会改变这一点,但each
将会改变。
如果要防止重复,请随意将jQuery对象分配给变量:
var input = $('input[type="text"]');
if (input.val() == '') {
input.css('width', '20%');
}
编辑:由于您有多个输入,因此您可以使用each
循环获得所需的行为:
$('input[type="text"]').each(function() {
if ($(this).val() == '') {
$(this).css('width', '20%');
}
});
答案 1 :(得分:1)
您可以通过使用jQuery过滤器函数
定位空输入来添加CSSjQuery("input[type="text"]").filter(function() {
return !this.value;
}).css('width', '20%');
这会将CSS添加到所有带有text类型和空值的输入中。