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

Checking .val() in an if statement and using $(this) on object if empty (jQuery)

我试图通过不必在每个 if 语句中多次包含我的对象 ID 来简化我的 jQuery 代码。我尝试了一些解决方案,但 none 似乎可以解决问题。基本上我有一个注册表格和一个 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(),我如何让它查看对象呢?

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

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

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