【问题标题】:JQuery not workingjQuery 不工作
【发布时间】:2011-01-31 10:32:37
【问题描述】:

我正在尝试在我的网页中实现 JQuery,但我无法成功实现它。

我有一个母版页

我为菜单栏添加了一个脚本,该脚本已经在使用由 Google 托管的 jquery

这是在母版页本身编码的

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>

现在我想实现一个 Jquery 来将 css 可见性属性设置为 true 或 false。 进入我的同一母版页的content page

    <script type="text/javascript">
            $(document).ready(function(){  
                $("#lnkAddMore").click(function(){
                 alert();
                  }
                  );
            });
        </script>

这个 html 控件在我的UpdatePanel 下。 我不知道为什么它不起作用? 我在 UpdatePanel 下使用这个控件。

<input type="button" id="lnkAddMore" value="Add More" />

我试图在我的更新之外使用它 面板它运行成功但是 不在更新面板中

我认为将它与 UpdatePanel 一起使用会出现问题

这是我的页面来源

   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script> 


    <link href="../../Css/Domain.css" rel="stylesheet" type="text/css" /> 
    <script type="text/javascript"> 
        $(document).ready(function(){  
            $("#lnkAddMore").click(function(){alert();$('#h').hide(100);});
            $('#h').show(100);
        });
    </script> 


       <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <div id="divDomain" runat="server">
<asp:gridview/>
                <div style="text-align:right;">
                    <input type="button" id="lnkAddMore" value="Add More" />
                </div>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>

【问题讨论】:

  • ddmenu_open和ddmenu_timer函数的定义在哪里?
  • @curtisk:它们的定义在同一个脚本标签内。我只是在这里删除它以使代码更具可读性。 JQuery 的那部分运行良好
  • 您是否尝试将点击事件添加到由更新面板动态加载的元素?
  • @ROMAN 不,我不会动态添加该元素

标签: asp.net jquery asp.net-ajax


【解决方案1】:

你真的嵌套了&lt;script&gt;标签还是打错了?

<script type="text/javascript">

<script type="text/javascript">

如果这不是拼写错误,那么这可能就是问题所在。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {  
        $('#ddmenu > li').bind('mouseover', ddmenu_open)
        $('#ddmenu > li').bind('mouseout',  ddmenu_timer)
    });

    $(document).bind('click', ddmenu_close); // do you really want to close on any click?
</script>

【讨论】:

  • 我是这样用的
  • 在您上面的代码中,您在另一个
【解决方案2】:

我在 jQuery 和 UpdatePanels 中使用了两种方法。

第一个是这样的: jQuery $(document).ready and UpdatePanels?

我在 Rick Strahl 的博客 (http://www.west-wind.com/Weblog/posts/154797.aspx) 上找到的另一种方法是在后面的代码中执行类似的操作:

ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "alertScript", 
    @" $(document).ready(function(){  
            $("#lnkAddMore").click(function(){
             alert();
              }
              );
        });", true);

查看另一个示例:Problem with ScriptManager.RegisterClientScriptBlock and jQuery in Internet Explorer 8

还可以查看 jQuery 的 live() 事件订阅者。

【讨论】:

    【解决方案3】:

    检查按钮的 ID 是否实际上没有更改为类似

    ctl00_ContentPlaceHolder1_lnkAddMore
    

    因为它位于母版页的内容占位符中。

    如果是这样,您必须调整您的 JQuery。

    【讨论】:

    • @Lester 不,它的名字没有改变。我已将按钮作为 HTML 控件
    • 与 UpdatePanel 一起使用时是否有其他方法可以调用 JQuery
    • 这显示在源代码中。 ID 相同
    【解决方案4】:

    当您在 UpdatePanel 下加载代码时,请尽量不要将其包装在 $(document).ready(); 中。对于 AJAX 事件,不会在 document 上触发 Ready。

    【讨论】:

    • 我将页面代码编辑为
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2012-08-22
    • 2017-06-19
    • 2012-06-23
    • 2019-03-29
    • 2011-07-21
    • 2011-04-24
    相关资源
    最近更新 更多