jquery解绑和绑定

时间:2011-01-05 04:55:41

标签: jquery bind unbind

我只想禁用用户点击元素以获取某些条件的功能,然后再将其重新绑定到另一个条件。以下是我正在使用的一些代码:

 $('#navigation a').bind('click',function(e){

    var $this   = $(this);
    var prev    = current;

    current = $this.parent().index() + 1;

    if (current == 1){
       $("#navigation a:eq(1)").unbind("click"); // remove the click for element
    }
    if (current >= 2){
       $("#navigation a:eq(1)").bind("click"); // this doesn't work, but i want re-bind the click here.
    } }

我需要做些什么来完成这项工作?

1 个答案:

答案 0 :(得分:4)

听起来你真的想要禁用第一个导航链接。如果是这种情况,您只需要:

$("#navigation a:first").click(function () { return false; });

从事件处理程序返回false会阻止浏览器的默认操作(跟踪链接)发生。

虽然,如果链接不是可点击的,请不要将其设为链接,将其转换为<span>

var link = $("#navigation a:first");
$("<span>").text(link.text()).attr("class", link.attr("class"))
    .insertBefore(link);
link.remove();

(假设链接的class属性是唯一值得复制的属性)。


如果您确实希望取消绑定您编写的自定义处理程序,那么您希望为处理程序函数提供名称,以便可以再次引用它以进行重新绑定:

$('#navigation a').bind('click', onClick);

function onClick(e) {
    var $this   = $(this);
    var prev    = current;

    current = $this.parent().index() + 1;

    if (current == 1){
       $("#navigation a:eq(1)").unbind("click"); // remove the click for element
    } else {
       $("#navigation a:eq(1)").bind("click", onClick); // use the function again
    }
}