我正在尝试通过不必每个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(),我该如何让它看看对象呢?
答案 0 :(得分:0)
this
仅在某种调用基础结构为您设置this
时才有效(通常在回调函数中)。您的使用案例不会为您执行此操作,因为this
已经具有您所处的任何函数的值,并且此处没有使用可能更改回调内部值的回调。
避免对选择器进行两次评估的最佳选择是将其缓存在局部变量中,这是一种广泛使用且简单的优化。
var item = $("#first_name");
if (!item.val()) {
item.focus();
return false;
}