ASP.NET回发后jQuery选择器不工作(没有UpdatePanels,没有AJAX)

时间:2014-06-26 04:34:50

标签: javascript jquery asp.net postback

我需要尽快对旧页面进行更改,并且为了避免回发而花费很多时间(为了避免回发)需要花费太长时间(使得更正确的版本必须在以后更新,这个新功能需要尽快到位。所需的javscript更改太复杂了,无法完全在页面当前用于所有内容的普通JS中进行尝试(这已经足够混乱了),因此我决定使用jQuery快速实现新功能。

一切正常,直到有回发,之后文档就绪功能仍然运行,但选择器不再找到任何东西。我没有使用ASP.NET AJAX,所以没有UpdatePanels或部分回发。

发生了什么,如何以最简单,最快的方式解决?

2 个答案:

答案 0 :(得分:1)

虽然$(document).ready()非常适合一次性初始化例程,但如果您在每次部分回发后都需要重新运行代码,则会让您挂起。当然有办法解决这个问题。但是你可以尝试使用.NET franeworks pageLoad()并在那里绑定你的事件,看看选择器是否仍然在回发后工作。

<script type="text/javascript">
  function pageLoad() {
    $("#Button1").on('click', function () {
       ...
    });
  }
</script>

答案 1 :(得分:0)

如果您有一个附加到DOM的触发器,并且DOM中的该元素被替换,则触发器将丢失。这样的触发器可能看起来像$('#mydiv').on('click', function(){});

相反,您可以将触发器附加到不会被替换的DOM元素上。简单的方法是将其附加到document,但建议您缩小搜索范围。

这样的选择器看起来像

$('document').on('click', '#mydiv', function() {});

这意味着如果重新创建元素#mydiv,则触发器不会丢失。

您可以在http://api.jquery.com/on/

了解有关委派活动的更多信息