0

我在 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

提前致谢

4

3 回答 3

4

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

于 2012-12-14T06:10:44.897 回答
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);
});
于 2012-12-14T06:22:50.810 回答
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
   }
 });
于 2012-12-14T06:23:50.527 回答