1

当文本字段的状态集中时,我需要触发一些操作。

如果文本字段是标准内联元素,则此代码可以正常工作(经过测试)。但如果文本字段位于模态窗口内,则它不起作用。我猜想在加载 jquery 库时模态窗口是隐藏的,然后是问题。

我怎样才能得到这个工作?

    $('#name').focus(function() {
console.log('do something');
}); 
4

1 回答 1

1

我猜想在加载 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 元素存在。

于 2013-02-26T07:23:18.580 回答