我正在使用jQuery通过
设置某些输入文本框控件的焦点/模糊事件$(function() {
..
});
但是每当发生回发时,我的控件就不再执行这些事件了。我尝试将它们从文档就绪事件中删除,并将代码放在文档的底部,希望每次都加载它,但这不起作用。如何在回发后让这些控件保留焦点/模糊事件?
不认为这很重要,但这些回发发生在ajax:UpdatePanel
答案 0 :(得分:4)
您将事件附加到元素上,稍后将删除它们,这意味着事件也会被删除。您可以反复附加事件,但您可以简单地将事件附加到更高级别的父节点,而不用担心它:
$(function () {
$(document).on('focusin', 'input.userTxtA_center', function () {
this.value = '';
this.className = 'userTxtB_center';
});
});
我使用focusin
事件代替focus
,因为focus
没有冒泡。
答案 1 :(得分:0)
使用.live()
$('selector').live('EVENT', function() { });
EVENT是blur
/ focus
/ etc ...然后在DOM中创建控件时无关紧要,jQuery会自动重新连接处理程序。
OR 在回发完成后重新连接事件
请参阅 - ASP.NET - UpdatePanel and JavaScript - 了解如何操作。
答案 2 :(得分:-1)
是的,这是因为updatepannel, 使用此pageload事件而不是$(document).ready或$(function(){});
〔实施例:
<script type="text/javascript" language="javascript">
function pageLoad() {
$('#MyId').bind("mouseover", function(e) {
// Do something exciting
});
}
</script>