为什么我的jquery不执行?

为什么我的jquery不执行?,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我试图用jquery切换方法显示和隐藏一个div元素。我有一个linkbutton,onclick调用页面上的javascript。单击linkbutton时,即使我将javascript函数声明为返回false,页面也会进行回发。有人知道怎么解决这个问题吗 function toggleDiv(){ $('#app').toggle("fast"); } </script> <form runat="Server"> <asp:

我试图用jquery切换方法显示和隐藏一个div元素。我有一个linkbutton,onclick调用页面上的javascript。单击linkbutton时,即使我将javascript函数声明为返回false,页面也会进行回发。有人知道怎么解决这个问题吗

function toggleDiv(){
        $('#app').toggle("fast");
    }
</script>

<form runat="Server">

    <asp:LinkButton ID="LinkButton1" runat="Server" OnClientClick="toggleDiv(); return false;" Text="Show/Hide"></asp:LinkButton>

    <div id="app" style="background-color:Fuchsia; width:900px; height:300px;">
          <p>jQuery Example </p> 
    </div>

</form>   
函数toggleDiv(){
$('#app')。切换(“快速”);
}
jQuery示例

我会这样做:

$('#LinkButton1').click(function(e) {
  $('#app').toggle('fast');
  e.preventDefault();
});

然后只需删除
OnClientClick
事件。应该更容易一点,对你有用。

将你的js重写为以下内容,它应该可以正常工作

<script type="text/javascript">
    $('#<%= LinkButton1.ClientID %>').click(function(e) {
        $('#app').toggle("fast");
        e.preventDefault();
    });
</script>

<form runat="Server">
    <asp:LinkButton ID="LinkButton1" runat="Server" Text="Show/Hide"></asp:LinkButton>
    <div id="app" style="background-color:Fuchsia; width:900px; height:300px;">
        <p>jQuery Example </p> 
    </div>
</form>   

$('#')。单击(函数(e){
$('#app')。切换(“快速”);
e、 预防默认值();
});
jQuery示例


您是否在代码开头添加了就绪文档?自从你 重新使用Asp服务器控件时,控件由.net命名,可能linkbutton1没有重新设计为linkbutton1 id。我会这样编写代码:

$(function(){
       $('a[id$=LinkButton1]').click(function() { 
        $('#app').toggle("fast"); 
        return false; 
    }); 

});

该链接可能导致页面回发,这会将DIV重置为可见。解决此问题的最简单方法是从函数返回false

<script type="text/javascript">
$('#<%= LinkButton1.ClientID %>').click(function(e) {
    $('#app').toggle("fast");
    return false;
});
</script>

$('#')。单击(函数(e){
$('#app')。切换(“快速”);
返回false;
});

如果查看html代码,它看起来是这样的。注意“javascript:uu doPostBack”

<a id="btn" href="javascript:__doPostBack('btn','')">Show/Hide</a>

 <div id="app" style="background-color:Fuchsia; width:900px; height:300px;">
 <p>jQuery Example </p>
 </div> 

jQuery示例


我认为问题在于,您将Javascript语句与包含jquery的标记放在同一个脚本标记中

我将您的代码更改为此,它为我解决了问题:

<script src="scripts/jquery-1.4.min.js" type="text/javascript"></script>
    <script type="text/javascript" language="javascript">
        $(document).ready(function() {
            $('#<%= LinkButton1.ClientID %>').click(function(e) {
                $('#app').toggle("fast");
                return false;
            });
        });
    </script>

$(文档).ready(函数(){
$('#')。单击(函数(e){
$('#app')。切换(“快速”);
返回false;
});
});

脚本开始标记在哪里?jQuery文件包含在哪里?这可能更像是您正在使用的ASP.NET MVC框架的问题。因此,我添加了该标记,以便您获得更好的覆盖率。NET将在客户端将ID重写为神秘的内容side@Mike:也适用于普通的HTML元素?Sun JSF也有类似的功能,但只有f或者组件生成的HTML。似乎可以工作,但页面仍会回发并再次显示div。我认为return false会有所帮助,但遗憾的是没有。Wierd问题。