我只是想禁用用户点击某个条件的元素的功能。以下是我正在使用的一些代码:
$('#navigation a').bind('click',function(e){
var $this = $(this);
var prev = current;
current = $this.parent().index() + 1; // store the position in current
if (current == 1){
$("#navigation a:eq(1)").unbind("click"); // i want to disable the ability to click this element if current is 1
}
if (current >= 2){
$("#navigation a:eq(1)").bind("click"); // this is wrong, but I want to rebind the click if current is greater than 1.
}
}
答案 0 :(得分:84)
如果您使用的是jQuery版本1.4.3 +:
$('selector').click(false);
如果不是:
$('selector').click(function(){return false;});
答案 1 :(得分:23)
假设您使用点击事件,只需将其取消绑定。
例如
if (current = 1){
$('li:eq(2)').unbind("click");
}
编辑:
您目前是否正在将点击事件绑定到您的列表?根据你上面的评论,我想知道这是不是你真的在做什么?你如何实现点击?它只是一个锚(<a>
标签)?更明确的信息将有助于我们回答您的问题。
更新:
是否有人使用:eq()运算符。 http://jsfiddle.net/ehudokai/VRGfS/5/
正如我所料,它是一个基于0的索引运算符。因此,如果您想要在您的选择中转换第二个元素,那么您的选择是
$("#navigation a")
你只需添加:eq(1)(第二个索引)然后.unbind(“click”)所以:
if(current == 1){
$("#navigation a:eq(1)").unbind("click");
}
应该做的伎俩。
希望这有帮助!
答案 2 :(得分:10)
Raw Javascript也可以很快完成同样的事情:
document.getElementById("myElement").onclick = function() { return false; }
答案 3 :(得分:5)
您可以使用unbind方法删除已附加的处理程序...
if (current = 1){
$('li:eq(2)').unbind('click');
}
你可以查看解除绑定的内容吗? Unbind manual
答案 4 :(得分:1)
在触发点击事件后使用off()
方法来禁用元素以进行进一步的点击。
$('#clickElement').off('click');
答案 5 :(得分:0)
/ ** eworkyou ** //
$('#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"); //
}
if (current >= 2){
$("#navigation a:eq(1)").bind("click"); //
}
答案 6 :(得分:0)
我使用了.prop('disabled',true),它就像一个咒语,没有重新定义,很简单。
由于它会干扰Bootstrap Dropdown中的道具,因此必须将其超时125ms。