jQuery Mobile 和 ASP.NET 更新面板问题

标签 jquery asp.net

我有一个 ASP.NET 网站,该网站也使用 jQuery Mobile 进行渲染。大多数情况下,这非常有效,但我遇到了一个小问题。该网站进行了一项调查。页面上有几个“提交”按钮。为了防止整个站点重新加载,“提交”按钮位于 UpdatePanel 中,以便仅重新呈现该按钮。

(我还应该提到,我们在另一个页面上有一个 Report 控件,它也有我即将描述的相同问题)。

单击提交按钮时,该按钮会重新呈现,但现在它看起来像一个“正常”按钮,因为 jQuery Mobile 添加的所有 CSS 现在都丢失了。

所以...我知道问题在于,因为整个页面没有重新加载,所以 jQuery Mobile 没有拦截回发并向按钮注入(inject)必要的 CSS。

我不知道如何解决它。

我想我知道足够的知识来在回发时进行 javascript 调用,但我不知道要调用什么 jQuery Mobile 例程(我假设有某种 document.Ready() 调用,但如果我能找到它)以便修复它。

我确实在 jQuery Mobile 网站上发布了这个问题,但没有得到回复。此时我有点绝望,因为客户对这件事一直在逼迫我。

如有任何帮助,我们将不胜感激。

最佳答案

我找到了这个问题的解决方案,并想将其发布在这里供其他人使用。我的解决方案有点矫枉过正,但因此在大多数情况下应该“正常工作”。最终,您需要做的是在需要更新的元素上触发“create”事件。这就是 jQuery Mobile 正在寻找的内容,也是它开始重新解析 HTML 的原因。以下语句将抓取所有 <div>的(自然包括所有更新面板)在页面上,并将重新呈现其中的任何控件。我将其添加到后面的 ASP.NET 代码中的提交按钮的 Click() 事件中。 (请注意,将 javascript 添加到按钮的客户端 onclick() 似乎不起作用)

ScriptManager.RegisterStartupScript(Page, GetType(), "temp", "<script type='text/javascript'>$('div').trigger('create');</script>", false);  

请注意,如果您对要重新解析的内容有更好的处理能力,那么不要抓取每个 <div>在页面上,您可以定位准确的 <div>需要更新并且只更新必要的内容。这将提供更好的性能,但是即使在复杂的页面上解析也相当快。

关于jQuery Mobile 和 ASP.NET 更新面板问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7066554/

相关文章:

c# - .append() 在为图像 slider 动态绑定(bind)图像时不起作用

jquery UI 工具提示 - 未显示在元素顶部

javascript - jQuery html() 在 iframe 中失败?

javascript - 在react中用jquery选择当前元素

asp.net - ASP.NET MVC 中的 ViewBag 如何工作

c# - Nancy.Authentication.Token - token 以奇怪的间隔过期?

javascript - 添加文本到文本区域 光标当前所在位置 通过快捷键触发?

javascript - Internet Explorer 不保存打开文件对话框中的路径

c# - 如何在 ListView 中使用模板(asp.net、c#)

c# - LINQ 冲突 - 行未找到或未更改