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

Men*_*nan 14 c# asp.net jquery postback

我有常见的功能,我CommonFunctions.js在Scripts文件夹中将其折叠.

我将它包含在我的母版页上并在我的页面上使用它.当我在页面上发回任何帖子时,我的功能不起作用.

我的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 () {

        });

    });
  }
});
Run Code Online (Sandbox Code Playgroud)

Pra*_*day 24

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

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

   // put all your javascript functions here 

  });
}
Run Code Online (Sandbox Code Playgroud)

我有同样的问题,它对我有用.我希望它对你也有帮助.


Jos*_*arl 13

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

当您仅回发页面的一部分时,jQuery $(function() {});不会再次触发,因此您的处理程序永远不会重新附加.

这是一个相关问题,显示如何在UpdatePanel刷新时重新订阅您的事件.


use*_*446 8

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

function pageLoad(sender, args) {
     $(document).ready(function () {....}
}
Run Code Online (Sandbox Code Playgroud)