jquery绑定事件取决于情况

时间:2012-04-02 08:16:11

标签: jquery

我想了解jquery。我们可以根据变量/情况/另一个事件绑定事件吗?

例如,如果var X为0,则可以单击div,同时如果var X为1,则无法单击相同的div。

我做了这个jsfiddle http://jsfiddle.net/hKkVD/4/ 当然它不起作用,但你明白了。

编辑:对不起,我有些困惑。我需要在触发click事件之前检查变量。

所以基本上变量是检查(和切换)是否允许事件。感谢

4 个答案:

答案 0 :(得分:2)

你的JavaScript并不遥远,但对我来说(无论如何在Chrome中),alert关键字似乎已经引起了问题。在这里查看我的更新代码http://jsfiddle.net/cchana/6UeeG/

var alertMe = 0;

$("#toggle").click(function(){
   if (alertMe == 0){
       $("#toggle").text('turn alert off');
       alertMe = 1;
   }   
   else {
       $("#toggle").text('turn alert on');
       alertMe = 0;                
   }       
});

$("#clickme").click(function() {
    if(alertMe == 1) {
        alert("hey i could be clicked");
    }
});

在函数内部进行检查是有意义的,而不是定义两个单独的函数调用,因为只有满足的第一个条件才会绑定到元素。

答案 1 :(得分:0)

我不确定你是否在找这样的东西,但你可以查看这个url.I更新了你的演示。

http://jsfiddle.net/hKkVD/1/

答案 2 :(得分:0)

如果你的旗帜使用了任何其他名称,你的代码就可以了。问题是ny定义了一个标志'alert',你正在覆盖初始警报功能。因此,您所要做的就是更改标志的名称或专门调用全局函数,如下所示:'window.alert()'。这是一个改变了旗帜名称的小提琴:http://jsfiddle.net/hKkVD/2/

答案 3 :(得分:0)

首先,不要将alert用作变量名。这将拒绝访问原生alert()方法。

另外,在编写代码处理器之前,代码会测试alert的值。我希望你想要的是在点击处理程序中测试alert的值。

var b_alert = false;//boolean_alert
$("#toggle").click(function() {
    b_alert = !b_alert;
    $(this).text(b_alert ? 'turn alert off' : 'turn alert on');
});

$("#clickme").click(function() {
    if (b_alert) {
        alert('Hey I could be clicked!');
    }
    else {
        //do nothing
    }
});

请参阅fiddle