我需要尽快对旧页面进行更改,并且为了避免回发而花费很多时间(为了避免回发)需要花费太长时间(使得更正确的版本必须在以后更新,这个新功能需要尽快到位。所需的javscript更改太复杂了,无法完全在页面当前用于所有内容的普通JS中进行尝试(这已经足够混乱了),因此我决定使用jQuery快速实现新功能。
一切正常,直到有回发,之后文档就绪功能仍然运行,但选择器不再找到任何东西。我没有使用ASP.NET AJAX,所以没有UpdatePanels或部分回发。
发生了什么,如何以最简单,最快的方式解决?
答案 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,则触发器不会丢失。
了解有关委派活动的更多信息