在jQuery完成初学者,我假设答案很简单,所以我道歉。
我有一个这样的登录表单:
<table id="login_form">
<tr>
<td class="login_label">Username: </td>
<td><input type="text" class="login_input" /></td>
</tr>
<tr>
<td class="login_label">Password: </td>
<td><input type="password" class="login_input" /></td>
</tr>
</table>
和jQuery代码:
$(".login_input")
.focus(function(){
alert("Why do I never get this alert?");
}
);
为什么当我点击两个文本输入字段中的任何一个时,警报不会显示?如果我将“焦点”改为“准备好”,那么我就会收到警报,所以我假设它与之相关。
答案 0 :(得分:2)
您需要输入document.ready,以便在将元素添加到DOM并准备好DOM时执行绑定代码。准备工作在代码中等待在DOM中添加元素。
<强> Live Demo 强>
$(document).read(function(){
$(".login_input").focus(function(){
alert("Why do I never get this alert?");
});
});
传递给.ready()的处理程序保证在执行之后执行 DOM准备好了,所以这通常是附加所有其他内容的最佳位置 事件处理程序并运行其他jQuery代码。使用依赖的脚本时 关于CSS样式属性的值,重要的是引用 外部样式表或嵌入样式元素之前引用 脚本,reference。
答案 1 :(得分:0)
API:
当JavaScript提供用于执行代码的load事件时 页面呈现,此事件在所有资产之前都不会被触发 如图像已被完全接收。在大多数情况下, 只要DOM层次结构完全可以运行脚本 建造。传递给.ready()的处理程序是保证的 在DOM准备好之后执行,所以这通常是最好的地方 附加所有其他事件处理程序并运行其他jQuery代码。使用时 依赖于CSS样式属性值的脚本,这很重要 以前引用外部样式表或嵌入样式元素 引用脚本。
<强>代码强>
$(function () {
$(".login_input").focus(function(){
alert("now you do?");
}
);
});
答案 2 :(得分:0)
将代码包装在$(document).read(function(){<code here>});
中,这将在文档准备好后运行代码:
$(document).read(function(){
$(".login_input").focus(function(){
alert("Why do I never get this alert?");
});
});
演示:
答案 3 :(得分:0)
警报未显示的原因是缺少包装器$(document).ready(function() {...});
添加它会产生另一个问题,即无限循环的警报:
为什么在Infinite loop of jQuery focus() event with a element中描述了这一点。您可以尝试使用$(this).blur();
:
$(document).ready(function() {
$(".login_input").focus(function() {
$(this).blur();
alert("Here is my alert!");
});
});
但问题几乎是一样的。
在某些实际应用程序中,您很可能不会调用alert()。例如,将alert()
更改为console.log
可解决问题:
$(document).ready(function() {
$(".login_input").focus(function() {
console.log("field in focus");
});
});