我正在使用 jQuery 通过设置一些输入文本框控件的焦点/模糊事件
$(function() {
..
});
但是每当回发发生时,我的控件就不再执行这些事件。我尝试从文档就绪事件中删除它们并将代码放在文档底部,希望它每次都能加载它,但这不起作用。如何让这些控件在回发后保留焦点/模糊事件?
认为这无关紧要,但这些回发发生在ajax:UpdatePanel
我正在使用 jQuery 通过设置一些输入文本框控件的焦点/模糊事件
$(function() {
..
});
但是每当回发发生时,我的控件就不再执行这些事件。我尝试从文档就绪事件中删除它们并将代码放在文档底部,希望它每次都能加载它,但这不起作用。如何让这些控件在回发后保留焦点/模糊事件?
认为这无关紧要,但这些回发发生在ajax:UpdatePanel
您将事件一次附加到元素,它们稍后会被删除,这意味着事件也会被删除。您可以一次又一次地附加事件,但您可以简单地将事件附加到更高级别的父节点而不必担心:
$(function () {
$(document).on('focusin', 'input.userTxtA_center', function () {
this.value = '';
this.className = 'userTxtB_center';
});
});
我正在使用该focusin
事件而不是focus
因为focus
不会冒泡。
隔离演示:http: //jsfiddle.net/TUqsE/
使用绑定您的方法.live()
$('selector').live('EVENT', function() { });
EVENT 在哪里blur
/ focus
/etc... 那么在 DOM 中创建控件的时间无关紧要,jQuery 会自动重新连接处理程序。
或在回发完成后重新连接事件
请参阅 - ASP.NET - UpdatePanel 和 JavaScript - 了解如何操作。
是的,这是因为更新面板,使用这个页面加载事件而不是 $(document).ready 或 $(function() {});
示例:
<script type="text/javascript" language="javascript">
function pageLoad() {
$('#MyId').bind("mouseover", function(e) {
// Do something exciting
});
}
</script>