我正在研究asp.net和jquery。我一起使用updatepanel和jquery。 Enerything很好。但有时面临回发问题。假设在运行页面后我测试了一些调用同一页面的pagemethod的jquery调用。在某些事件之后,提交按钮不起作用。我按了好几次,但什么也没做。我无法找到问题。
请帮忙。
答案 0 :(得分:1)
当您在jquery中挂接事件时,它们与更新面板替换的dom元素相关联。因此,当你的dom元素被更新面板的替换元素破坏时,你连接的事件就会丢失。
您可以使用$(“MySelector”)。live('click',function(){alert('hi')});
它的工作原理是在页面的根dom节点上附加一个鼠标单击事件处理程序,该节点在原始源符合选择器条件时运行。事件将在dom上升,直到它们被处理和取消。这是一个非常方便的工具,用于处理动态替换或添加按钮的任何代码。当您不幸遇到更新面板时,它会特别有用。
您还可以查看.delegate。这样你就可以在更接近dom的父节点上定义函数(从而减少事件泡沫并提高效率)。我一直很好,只使用.live
答案 1 :(得分:0)
如果与按钮单击绑定的jQuery包含在$(document).ready中,它将松开在更新面板回发上绑定它的jQuery操作。 Microsoft asp.net Ajax自动调用名为pageLoad的函数,因此请执行以下操作。
像这样设置:
页面加载(){ $( '#按钮1')。点击(函数(){ //做一点事 }); }
不是这个:
(文档)$。就绪(函数(){ $( '#按钮1')。点击(函数(){ //做一点事 }); });