asp.net ajax jquery

3

我有一个页面,加载了一组歌曲的播放列表。这个播放列表中的单个歌曲可以使用jquery进行拖动。该页面还使用ajax更新面板进行服务器端排序。问题在于,当我执行服务器端排序后,jquery方法就不再起作用了。

在ASP.NET Ajax面板更新页面后,jquery方法会重新附加到文档上吗?

4个回答

1
如果元素被ajax更新替换,而使拖动工作的jquery事件绑定在元素本身上,那么是的,这些事件绑定将不会存在于新元素上。
一种选择是在ajax成功回调中重新运行创建这些事件绑定的任何初始化方法。另一种选择是使用jQuery的delegate()方法将这些事件处理程序绑定到给定容器内与选择器匹配的任何元素(即使在设置绑定之后添加)。

0
jQuery方法在ASP.NET AJAX面板更新页面后会重新附加到文档吗?
简短的回答是,如果它们是在document.ready事件中绑定的,则不会重新附加。一个“快速而肮脏”的解决方法是使用pageLoad。请查看此论坛帖子

0

如果我们正在使用UpdatePanel,那么存在一个问题。因此,每次页面加载时,我们需要从服务器端添加JavaScript。这可以通过将所有JavaScript代码添加到字符串变量中,并使用ScriptManager.RegisterStartupScript(this, this.GetType(), "validation", script, false);进行添加。请访问http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.registerstartupscript.aspx/了解有关该函数及其参数的更多信息。

您可以创建如下的函数:

 private void addScript()
        {
            string script = @"<script type=""text/javascript"" language=""javascript"">
              javascript function including jquery
               </script>";
            ScriptManager.RegisterStartupScript(this, this.GetType(), "validation", script, false);
        }

所有的JavaScript函数将被添加到字符串script中。 在页面加载时调用该函数。这样它就会再次添加到页面中。 我认为这将解决问题。

StreamReader localStreamReader = new StreamReader(Server.MapPath("scripts/PlaylistEditing.js")); string localScript=localStreamReader.ReadToEnd();ScriptManager.RegisterStartupScript(this, this.GetType(), "Movement", localScript, false); 这是我所做的。 - ChampChris

0

我相信您使用.load后会更加高兴。

$("body").append("<div style='display:none;'></div>");
$("div:last").load("url.aspx?id=1", function(response, status, xml){ ...do stuff });

我总是对$.ajax感到很烦恼,它有很多参数和冲突。

如果你的更新面板坏了,你仍然可以使用JavaScript __doPostBack(elmID, args)来提交后台。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接