首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery不适用于MultiView

Jquery不适用于MultiView
EN

Stack Overflow用户
提问于 2011-04-20 00:11:21
回答 5查看 3.3K关注 0票数 1

我在UpdatePanel内部的MultiView中有一个div。当我单击UpdatePanel内部的按钮时,会执行回调并显示div,但在鼠标悬停时它不会改变颜色(jquery不起作用)。

如果我把div放在UpdatePanel之外,jquery就能正常工作。

这里会有什么问题呢?

谢谢

代码语言:javascript
复制
<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;
    }
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-20 00:14:47

尝试使用.live,因为当文档第一次加载时,div不在页面上:

代码语言:javascript
复制
$(document).ready(function () {
        $("#MyDiv").live("hover", function () { $(this).css({ 'background-color': 'Red' }) });
    });

如果你想在悬停后做一些不同的事情,尝试绑定到mouseover和mouseout:

代码语言:javascript
复制
$('#MyDiv').live('mouseover mouseout', function(event) {
  if (event.type == 'mouseover') {
    // do something on mouseover
  } else {
    // do something on mouseout
  }
});
票数 3
EN

Stack Overflow用户

发布于 2011-05-04 22:32:04

在ajax回发完成后,您可以使用Sys.Application.add_load事件处理程序来执行客户端脚本。您可能不想将其封装在准备好的文档中,只需将jquery代码放在一个普通函数中并从AjaxLoadComplete()调用它即可。

代码语言:javascript
复制
<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对象还存在。

票数 3
EN

Stack Overflow用户

发布于 2011-04-20 00:15:53

我相信更新面板异步地带来内容,这意味着它在document.ready事件触发之后被放在页面上。因此,您是在该事件已经发生之后绑定到该事件的。尝试剥离document.ready部分,看看是否能正常工作。

编辑:或者像其他人建议的那样使用live。这可能是最好的。我很确定我的推理是正确的,为什么它不能工作!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5719393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档