似乎这段代码:
$(function(){
$('.show_hide_login').toggle(
function (){
alert('show');
$("div#fullpage").show();
$("div#loginbox").show();
},
function (){
alert('hide');
$("div#loginbox").hide();
$("div#fullpage").hide();
}
); });
当我点击任一链接时(两个,一个是div,一个是锚),任何关于它为什么会运行两次的想法?
答案 0 :(得分:5)
您对.show_hide_login
课程有多少个元素?我猜你有两个。在这种情况下,$('.show_hide_login')
结果包含两个元素,并为每个元素执行toggle()
。
答案 1 :(得分:0)
这不是您的问题的答案,但您可以稍微清理您的代码:
$(function() {
$('.show_hide_login').toggle(
function() {
alert('show');
$("#loginbox,#fullpage").show();
}, function() {
alert('hide');
$("#loginbox,#fullpage").hide();
});
});
至于你的实际问题,我怀疑尼克猜到了罪魁祸首。查看此演示,查看两次绑定同一事件的结果:http://jsfiddle.net/9jPLv/
除了在绑定toggle事件之前添加提醒,您还可以添加unbind()
并查看是否能解决问题,如下所示:
$('.show_hide_login').unbind().toggle(
如果解决了这个问题,那么切换绑定肯定会运行两次,所以你只需要找出原因。
答案 2 :(得分:0)
我的答案只是一种检查点,我有同样的问题,但出于不同的原因。我确实在基页和子页面中包含了脚本文件。如果您遇到此问题,这会导致切换运行两次,检查脚本是否只添加一次。
答案 3 :(得分:0)
这可能与我遇到的问题相同。
所以如果你有一个带有脚本标签的元素 - 那么你移动那个包含元素或用jquery中的另一个标签包装它 - 然后再次执行jquery中的ready函数 - 从而将第二个toggle函数绑定到你的元素
建议使用$('。show_hide_login')。unbind()。toggle(是一种可行的解决方法,但最好尝试将您的javascript代码移到页面的顶部或底部。