javascript - jquery slideToggle 在 ContentPlaceHolder 中不起作用

标签 javascript jquery html css slidetoggle

我想使用“slideToggle()”来显示/隐藏一组控件。我在网上找到了这段代码,并试图让它在测试应用程序中运行。当我将脚本放在内容控件中并单击按钮时,网站似乎在运行脚本,因为应用程序忙了几秒钟。但是,当我尝试调试 javascript 时,无法在调试器中查看它。当我将脚本放在 Site.Master 页面的部分时,我可以在调试器中看到代码,但是当我单击按钮时它没有运行。

这是我在 Site.Master 页面中的代码: 部分内容如下:

<head runat="server">
<meta charset="utf-8" />
<title><%: Page.Title %> - My ASP.NET Application</title>
<asp:PlaceHolder runat="server">     
      <%: Scripts.Render("~/bundles/modernizr") %>
</asp:PlaceHolder>  
<webopt:BundleReference runat="server" Path="~/Content/css" /> 
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
<script src="Scripts/jquery-1.11.1.min.js" type="text/javascript"></script>
<asp:ContentPlaceHolder runat="server" ID="HeadContent" />

这是内容控件中的脚本:

<div id="body">
    <asp:ContentPlaceHolder runat="server" ID="FeaturedContent" />
    <section class="content-wrapper main-content clear-fix">
        <asp:ContentPlaceHolder runat="server" ID="MainContent">
           <script type="text/javascript">

               $(document).ready(function () {

                   var Button1 = $("[id$='_Button1']");
                   var Button2 = $("[id$='_Button2']");
                   var Panel1 = $("[id$='_Panel1']");

                   Button1.click(function (e) {

                       Panel1.slideDown();
                       e.preventDefault();
                   });

                   Button2.click(function (e) {

                       Panel1.slideUp();
                       e.preventDefault();

                   });

               });
            </script> 
        </asp:ContentPlaceHolder>
    </section>
</div>

这是网站页面上的标记:

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
  <asp:Button ID="Button1" runat="server" Text="Show Panel" />
<asp:Button ID="Button2" runat="server" Text="Hide Panel" />

<br /><br />

<asp:Panel runat="server" ID="Panel1" Height="185px" Width="320px" style="display:none;" BackColor="#FFFF99" BorderColor="Black" BorderStyle="Solid" BorderWidth="2px">

   Hello World!

</asp:Panel>
</asp:Content>

使用这段代码,按钮至少看起来像是在调用脚本。

谁能看出我做错了什么?

谢谢!

更新代码 该脚本将切换面板,尽管它最初显示,我希望它最初被隐藏,而且如果可能的话,我希望脚本从 Site.Master 页面运行。

这是在 Default.aspx 文件中:

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
<script type="text/javascript">
    $(function () {
        $("#<%=Button1.ClientID %>").click(function (evt) {
            evt.preventDefault();
            $("#<%=Panel1.ClientID %>").slideToggle('slow');
        });
    });
</script>
<asp:Button ID="Button1" runat="server" Width="200px" Text="Show Panel" OnClick="Button1_Click" />
<asp:Panel ID="Panel1" runat="server">
    This is within the Panel.
</asp:Panel>

我在该部分的 Site.Master 页面中添加 jquery 路径:

 <script src="Scripts/jquery-1.11.1.min.js" type="text/javascript"></script>

如何让脚本从 Site.Master 页面运行?

谢谢。

最佳答案

试试下面的代码:

  <script type="text/javascript">

           $(document).ready(function () {

               $("[id$=Button1]").on("click",function (e) {

                  $("[id$=Panel1]").slideDown();
                  return false;
               });

               $("[id$=Button2]").on("click",function (e) {

                    $("[id$=Panel1]").slideUp();
                   return false;

               });

           });
        </script> 

关于javascript - jquery slideToggle 在 ContentPlaceHolder 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23683333/

相关文章:

javascript - 如何使用 Python 从网站获取嵌入 JSON 数据?

javascript - 如何每隔 x 秒在另一个 Canvas 或图像之上重新绘制一个 Canvas ?

javascript - 通过js查看json api从url到html页面

javascript - 看起来我的 javascript 中断了我的 css

javascript - 避免在不使用框架/iframe 的情况下重新加载内容

html - 如何设置输入文本与 css 内联显示?

javascript - 正则表达式验证 AngularJs

javascript - 验证对象中是否存在深层属性

javascript - 使用 parseFloat 时出错 "An invalid form control with name=' field_name' 不可聚焦。”

javascript - 如何删除 HTML5 音频标签中的下载选项?