当文本字段的状态集中时,我需要触发一些操作。
如果文本字段是标准内联元素,则此代码可以正常工作(经过测试)。但如果文本字段位于模态窗口内,则它不起作用。我猜想在加载 jquery 库时模态窗口是隐藏的,然后是问题。
我怎样才能得到这个工作?
$('#name').focus(function() {
console.log('do something');
});
当文本字段的状态集中时,我需要触发一些操作。
如果文本字段是标准内联元素,则此代码可以正常工作(经过测试)。但如果文本字段位于模态窗口内,则它不起作用。我猜想在加载 jquery 库时模态窗口是隐藏的,然后是问题。
我怎样才能得到这个工作?
$('#name').focus(function() {
console.log('do something');
});
我猜想在加载 jQuery 库时模态窗口是隐藏的,然后是问题。
你猜对了,可能你在某个事件之后加载了模态对话框的内容。
现在代码:
$('#name').focus(function() {
console.log('do something');
});
可能附加到 $(document).ready() 事件,该事件在每次加载新文档时触发,但在 ajax 调用完成时不会触发
为了克服这个问题,您需要为将运行所需功能的对话框的加载事件附加一个委托。根据您的 jQuery 版本查看 API 或 LIVE http://api.jquery.com/on/
如果你愿意,你可以为每个点击事件使用一个通用委托,并尝试在每次点击后附加你的焦点事件,如下所示:
$(document).on("click", "#name", function() {
$(this).focus(function() {
console.log('do something');
});
});
这将尝试在每次单击后将焦点功能附加到#name 元素,即如果#name 元素存在。