2012-12-03 10 views
0

解除绑定功能我有一个是某元素被点击使用jQuery

$(".side-nav .page-header h1 span").click(function(event) { 

}).unbind('ready',sideNav); 

我当上subnav项目

$(".side-nav ul li a").click(function(event) { 
    $(document).ready(sideNav()); 
}); 

if(window.location.hash) { 
    $(document).ready(sideNav()); 
} 

我试图拆散sideNav双方点击触发这个函数sideNav尝试使用.live()和.die(),但这些不会在标签if语句上工作。

任何帮助,将不胜感激。谢谢。

+2

我只能说,你做错了,错了!将函数括号添加到函数中,文档就绪语句至少在错误的地方执行......等等。至于回答这个问题,你应该使用on()和off()。 – adeneo

回答

2

调查jQuery bind()unbind()

做些什么来改变你的点击(),你可以这样做:

$(".side-nav ul li a").bind('click', function(event) { 
    $(document).ready(sideNav()); 
}); 

$(".side-nav ul li a").unbind('click'); 
+0

这将是答案,除非它不适用于if语句。 – user1521516

+0

@ user1521516我对JS中的散列没有多少经验,但是它会比你的if语句在执行时是假的还是偶然的。在这种情况下,这不是jQuery的错。 –

0

on()off()将安装和拆卸的事件处理程序的首选方式。

此外,将代码包装在文档中以准备在执行代码时确保DOM已加载,不要将每个函数都包含在自己的文档就绪函数中。

当你referrence一个功能,你只敲入函数名称为“sideNav”,如果你加括号,如“sideNav()”你执行该功能就和传回该函数的值,默认值,除非返回的其他内容是“未定义”,并且在添加括号时,文档就绪函数完全不起作用。

$(document).ready(function() { 
    $(".side-nav ul li a").on('click', sideNav); 

    $(".side-nav .page-header h1 span").on('click', function() { 
     $(".side-nav ul li a").off('click'); 
    }); 
}); 
+0

虽然,我需要这个来处理if语句。 – user1521516