如何在触发另一次点击()时清除click()?

时间:2012-12-14 06:08:54

标签: javascript jquery html css click

我在click()上遇到了一个复杂的问题。我有4个按钮,分别命名为功能1,功能2,方法1和方法2。

<button id="function1"> Function 1</button>
<button id="function2">Function 2</button>
<button id="method1">Method 1</button>
<button id="method2">Method 2</button>

单击单击功能1并单击方法1时,我必须触发此操作

 $("#function1").click(function(){
 $('#method1').click(function(){
 $('#section1').html('<img src="http://us.123rf.com/400wm/400/400/myvector/myvector1201/myvector120102079/12127940-  vector-illustration-of-single-isolated-airport-icon.jpg"/>');
  });
});

像这样我有功能1方法1,功能1方法2,功能2方法1,功能2方法2的四种不同组合。

问题是当我用任何方法选择功能1时它工作正常。当我在选择功能1后选择功能2时,它会更改两个值。

我想清除之前的click(),并且只能对所选组合进行更改。

我添加了BIN

提前致谢

3 个答案:

答案 0 :(得分:4)

您正在寻找unbind,它会删除事件处理程序。 Updated Bin

答案 1 :(得分:0)

我不认为使用连续点击的绑定是个好主意。创建一些变量以包含单击序列,并检查序列是否与您感兴趣的内容相匹配。这只是一个例子:

var prevClick = '';
var currClick='';

function doClick() {
    var name = $(this).attr("id");
    prevClick = currClick;
    currClick = name;
    checkSequence();
}

function checkSequence() {
    // Check the sequence.
    if ((prevClick == 'function1') && (currClick == 'method1'))
    {
      $('#section1').html('<img src="http://us.123rf.com/400wm/400/400/myvector/myvector1201/myvector120102079/12127940-  vector-illustration-of-single-isolated-airport-icon.jpg"/>');
    }
}

$(function(){
   // Assume that you only this four buttons.
   // Otherwise put more specific jQuery selector like adding a class.
   $("button").click(doClick);
});

答案 2 :(得分:0)

$ .Click用于添加事件处理程序。当您单击“function1”/“function2”按钮时,您将向“method1”添加一个事件处理程序。例如,当用户单击“function1”2次,“function2”3次。 'method1'将有5个事件处理程序,2个用于'function1',3用于'function2'。这不是一个好的设计。

为了您的目的。这是一个解决方案:

var funType = 0;
$("#function1").click(function(){
   funType = 1;
});
$("#function2").click(function(){
   funType = 2;
});

$('#method1').click(function(){
   if(funType  == 1){
      //function1 is clicked
   }
   else if(funType  == 2){
      //function2 is clicked
   }
});

$('#method2').click(function(){
   if(funType  == 1){
      //function1 is clicked
       }
   else if(funType  == 2){
      //function2 is clicked
   }
 });