2012-02-25 122 views
0

这是我第一次使用jquery,我不知道这个简单的部分为什么不起作用。我有两个按钮,一个隐藏一个div,另一个显示它,但即使我已将UseSubmitBehaviour设置为false,按钮仍会继续进行回发。简单的jquery不工作

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#Social_WorkerButton").click((function() { 
     $("#SponsorDetails").hide("slow"); 
    }); 
    $("#SponsorButton").click(function() { 
     $("#SponsorDetails").show("slow"); 
    }); 
}); 

这是头内部的脚本块时,参照文件的jquery在母版。

编辑:我得到一个警告,第二个分号应该是,或),但我不明白为什么,代码是直接从W3学校

+0

当在浏览器中的最终页面加载,检查jQuery的x.x.x.js被包含在你页面的源代码! – linuxeasy 2012-02-25 16:07:32

+0

它似乎是这样的,参考IS列在顶部,但不是实际的代码 – Matt 2012-02-25 16:14:05

+0

检查js控制台(ctrl + j在Chrome和FF中出现错误) – 2012-02-25 16:19:35

回答

3

您可以使用事件参数的preventDefault()停止默认发生的行为(在这种情况下,按钮提交)。

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#Social_WorkerButton").click((function (e) { 
     e.preventDefault(); 
     $("#SponsorDetails").hide("slow"); 
    }); 
    $("#SponsorButton").click(function (e) { 
     e.preventDefault(); 
     $("#SponsorDetails").show("slow"); 
    }); 
}); 
+0

试过了,但仍在做回发 – Matt 2012-02-25 16:16:13

+0

嗯......通常是有效的。您也可以尝试在每个点击处理程序结束时返回false。你确定这些选择器正确地找到按钮吗?也许在处理程序的顶部放置一个警报,以查看这些处理程序是否正在开火。 – HackedByChinese 2012-02-25 16:20:54

+0

Nix指出了一个额外的圆括号,但我仍然需要preventDefault()方法来停止回发,谢谢 – Matt 2012-02-25 16:27:57

2

我看到你已经标记了ASP.NET。你不会碰巧使用ASP:控件,是吗?如果你没有在你的代码中使用它们,我没有看到这样做的理由。尝试使用简单的HTML <input type="button" />或简单地<button />

编辑

$(document).ready(function() { 
    $("#Social_WorkerButton").click(function() { // <-- Extra parenteses removed 
     $("#SponsorDetails").hide("slow"); 
    }); 
    $("#SponsorButton").click(function() { 
     $("#SponsorDetails").show("slow"); 
    }); 
}); 
+0

我使用的是asp:按钮,但我也用普通的html按钮和上面的回答仍然没有工作。 – Matt 2012-02-25 16:16:49

+1

你在第一个函数中有太多的伴奏。 – Nix 2012-02-25 16:21:10

+0

好的发现它,谢谢。还需要上面的preventDefault()方法,所以我必须将其标记为所选的答案。再次感谢 – Matt 2012-02-25 16:27:01