在if语句中检查.val()并在对象上使用$(this)如果为空(jQuery)

时间:2015-02-19 23:48:16

标签: jquery if-statement this

我正在尝试通过不必每个if语句多次包含我的对象id来简化我的jQuery代码。我尝试了一些解决方案,但似乎没有办法解决问题。基本上我在提交期间有一个注册表单和一个if语句来检查字段是否有任何问题(例如,它是空白的)。我只想让if语句引用输入值,如果它是空白的,使用“this”将焦点返回给输入。到目前为止,这是我的代码:

if ($("#first_name").val()=="") {
    $("#first_name").focus();
    return false;
}

这样可以正常工作,但是我想摆脱对#first_name的第二个引用,而只是使用“this”。这可能吗?理想情况下,它看起来像这样:

if ($("#first_name").val()=="") {
    $(this).focus();
    return false;
}

我知道它不起作用,因为if语句正在查看val(),我该如何让它看看对象呢?

1 个答案:

答案 0 :(得分:0)

this仅在某种调用基础结构为您设置this时才有效(通常在回调函数中)。您的使用案例不会为您执行此操作,因为this已经具有您所处的任何函数的值,并且此处没有使用可能更改回调内部值的回调。

避免对选择器进行两次评估的最佳选择是将其缓存在局部变量中,这是一种广泛使用且简单的优化。

var item = $("#first_name");
if (!item.val()) {
    item.focus();
    return false;
}