我在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
提前致谢
答案 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
}
});