回发后,我的JavaScript函数在ASP.NET中不起作用

我有常见的function,我在Scripts文件夹中的CommonFunctions.js其折叠。

我将它包含在我的母版页上并在我的页面上使用它。 当我在页面上发回任何post时,我的function不起作用。

我的CommonFunctions.js

 $(function () { gf(); if (Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) { gf(); } function gf(){ $('.AddNewGeneralPanel').click(function () { if ($(this).find('.AddNewGeneralPanelStyle').text() == "") { $(this).find('.AddNewGeneralPanelStyle').text("( Gizle )"); lastOpenId = $(this).attr("kodid"); } else $(this).find('.AddNewGeneralPanelStyle').text(""); $(this).next('.AddNewGeneralAccordionDiv').slideToggle('slow', function () { }); }); } }); 

由于您使用的是UpdatePanel ,因此您在事件处理程序中附加的DOM部分将在回发后被删除并重新创建。 这具有删除页面首次加载时由jQuery附加的任何事件处理程序的效果。

当你只回发页面的一部分时,jQuery $(function() {}); 不会再次开火,所以你的处理人员永远不会重新上架。

这是一个相关问题 ,显示了UpdatePanel刷新时如何重新订阅事件。

这是因为updatepanel部分回发。 这是你需要做的。

 function pageLoad(sender, args) { $(document).ready(function(){ // put all your javascript functions here }); } 

我有同样的问题,它对我有用。 我希望它也能帮到你。

这是因为使用了updatepannel 。 以下代码工作正常。 只需将您的jquery代码放在pageLoad事件中,如下所示

 function pageLoad(sender, args) { $(document).ready(function () {....} } 

我有同样的问题,我用这个代码解决了:

  

假设您使用UpdatePanel进行回发并且JS代码被附加到更新面板中的HTML元素,则需要在加载更新面板时再次附加它们。 您可以在endRequest事件上连接代码:

 Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler) 

http://msdn.microsoft.com/en-us/library/bb383810.aspx

请记住,如果您使用多个更新面板,则应检查更新哪个更新面板,并仅附加所需的事件,否则您可能会多次触发事件。

面临同样的问题。 更改

 $(document).ready(function() { 

 Sys.Application.add_load(function() { 

这将迫使它甚至在部分postbacck上运行