Jquery $(这个)不起作用

时间:2014-07-29 20:14:49

标签: jquery css input this

我有这段代码

    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

2 个答案:

答案 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过滤器函数

定位空输入来添加CSS
jQuery("input[type="text"]").filter(function() {
    return !this.value;
}).css('width', '20%');

这会将CSS添加到所有带有text类型和空值的输入中。