0

我正在使用 jQuery 通过设置一些输入文本框控件的焦点/模糊事件

$(function() {
  ..
});

但是每当回发发生时,我的控件就不再执行这些事件。我尝试从文档就绪事件中删除它们并将代码放在文档底部,希望它每次都能加载它,但这不起作用。如何让这些控件在回发后保留焦点/模糊事件?

认为这无关紧要,但这些回发发生在ajax:UpdatePanel

4

3 回答 3

4

您将事件一次附加到元素,它们稍后会被删除,这意味着事件也会被删除。您可以一次又一次地附加事件,但您可以简单地将事件附加到更高级别的父节点而不必担心:

$(function () {
    $(document).on('focusin', 'input.userTxtA_center', function () {
            this.value = '';
            this.className = 'userTxtB_center';

    });
});

我正在使用该focusin事件而不是focus因为focus不会冒泡。

隔离演示:http: //jsfiddle.net/TUqsE/

于 2012-05-03T18:33:47.897 回答
0

使用绑定您的方法.live()

$('selector').live('EVENT', function() { });

EVENT 在哪里blur/ focus/etc... 那么在 DOM 中创建控件的时间无关紧要,jQuery 会自动重新连接处理程序。

http://api.jquery.com/live/

在回发完成后重新连接事件

请参阅 - ASP.NET - UpdatePanel 和 JavaScript - 了解如何操作。

于 2012-05-03T18:05:37.000 回答
-1

是的,这是因为更新面板,使用这个页面加载事件而不是 $(document).ready 或 $(function() {});

示例:

<script type="text/javascript" language="javascript">
    function pageLoad() {
       $('#MyId').bind("mouseover", function(e) {
           // Do something exciting
       });
    }
    </script>
于 2012-05-03T18:30:40.263 回答