我正在使用asp.net Web应用程序上的bootstrap组件。 它的工作正常,但奇怪的是,它们在页面回发后停止工作。外观很好,但行为不是。这就是为什么我认为这个问题包含了javascript文件。
例如,dorp down按钮:在回发后,展开操作不起作用。
你知道这可能是什么原因吗?
答案 0 :(得分:20)
如果您使用UpdatePanel进行部分页面刷新,那么当通过AJAX更新面板的内容时,通常的$(document).ready(...) / $(...)
内容不会再次触发,这意味着自定义JS功能(如作为Bootstrap一部分的下拉列表不会重新绑定到新元素。
我通常做的是提取我的代码,将javascript事件处理程序和行为设置到他们自己的函数中(例如function BindEvents() { ... }
),然后我在更新面板中使用以下代码来确保它重新获得在部分回发之后(以及在初始页面加载时)运行:
<script type="text/javascript">
Sys.Application.add_load(BindEvents);
</script>
编辑:以下是建议的基本BindEvents()
功能,应该为您重新初始化下拉菜单:
function BindEvents() {
$('[data-toggle=dropdown]').dropdown();
// other bootstrap binding code - see the combined Bootstrap.js for ideas
}
答案 1 :(得分:2)
如果您使用此行代码,则每次更新面板更新时,endRequestHandler中的任何内容都会触发。
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
function endRequestHandler(){
// initialize controls here...
}
答案 2 :(得分:0)
将以下内容置于页面正文中解决了问题:
<script type="text/javascript">
$( '下拉菜单,切换')下拉列表()。
</script>