我在UpdatePanel内部的MultiView中有一个div。当我单击UpdatePanel内部的按钮时,会执行回调并显示div,但在鼠标悬停时它不会改变颜色(jquery不起作用)。
如果我把div放在UpdatePanel之外,jquery就能正常工作。
这里会有什么问题呢?
谢谢
<script src="jquery-1.5.2.min.js" type="text/javascript"></script>
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<script type="text/javascript">
$(document).ready(function () {
$("#MyDiv").hover(function () { $(this).css({ 'background-color': 'Red' }) });
});
</script>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:MultiView runat="server" ID="mvPopup">
<asp:View ID="View1" runat="server">
<div id="MyDiv">Some text here</div>
</asp:View>
</asp:MultiView>
<asp:LinkButton runat="server" OnClick="btnLink_Click" ID="btnLink" Text="Click here" />
</ContentTemplate>
</asp:UpdatePanel>
protected void btnLink_Click(object sender, EventArgs e)
{
mvPopup.ActiveViewIndex = 0;
}发布于 2011-04-20 00:14:47
尝试使用.live,因为当文档第一次加载时,div不在页面上:
$(document).ready(function () {
$("#MyDiv").live("hover", function () { $(this).css({ 'background-color': 'Red' }) });
});如果你想在悬停后做一些不同的事情,尝试绑定到mouseover和mouseout:
$('#MyDiv').live('mouseover mouseout', function(event) {
if (event.type == 'mouseover') {
// do something on mouseover
} else {
// do something on mouseout
}
});发布于 2011-05-04 22:32:04
在ajax回发完成后,您可以使用Sys.Application.add_load事件处理程序来执行客户端脚本。您可能不想将其封装在准备好的文档中,只需将jquery代码放在一个普通函数中并从AjaxLoadComplete()调用它即可。
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<script type="text/javascript">
Sys.Application.add_load(AjaxLoadComplete);
function AjaxLoadComplete() {
//Call your jquery methods here
}
</script>另外,要确保add_load()调用跟在scriptmanager标记之后。你不能把它放在头中,因为SYS对象还存在。
发布于 2011-04-20 00:15:53
我相信更新面板异步地带来内容,这意味着它在document.ready事件触发之后被放在页面上。因此,您是在该事件已经发生之后绑定到该事件的。尝试剥离document.ready部分,看看是否能正常工作。
编辑:或者像其他人建议的那样使用live。这可能是最好的。我很确定我的推理是正确的,为什么它不能工作!
https://stackoverflow.com/questions/5719393
复制相似问题