我只想禁用用户点击元素以获取某些条件的功能,然后再将其重新绑定到另一个条件。以下是我正在使用的一些代码:
$('#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.
} }
我需要做些什么来完成这项工作?
答案 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
}
}