2016-01-23 100 views
0

我设置了一个表单,其中有多个下拉菜单,每个下拉菜单每个单独启用一个按钮。其中有7个。我需要一个用户能够运行按钮列表,然后转动他们想要的许多按钮。切换多个菜单需要2次点击

正如你可以看到下面的JSFiddle所示,如果你尝试点击“切换禁用”,然后点击“禁用切换2”等,它将不会注册第二次点击。

http://jsfiddle.net/x9k72tr2/

我已经尝试使用:

$("#toggle-disabled2").click(function(){ 
    state = !state; 
    $widget2.multiselect(state ? 'disable' : 'enable'); 
}); 

然后我意识到,没有任何意义。

我当时想知道你是否可以用.hasClass做到这一点,但我不知道如何在这个设置中实现它。

编辑: 我发现有相当多的2点击被问的问题,像这样的:不过,我有如何与我的小工具做到这一点很难 Toggle function requiring 2 clicks

http://jsfiddle.net/sNY2b/

。还注意到有多个变量,即使一个变量被破坏,它也会混淆所有的多重选择。所以我试图改变它,希望它也能解决问题:

var $widget1 = $("select" + id).multiselect(), state = true; 

$("#toggle-disabled1").click(function(){ 
    state = !state; 
    $widget1.multiselect(state ? 'disable' : 'enable'); 
}); 
$("#toggle-disabled2").click(function(){ 
    state = !state; 
    $widget2.multiselect(state ? 'disable' : 'enable'); 
}); 
$("#toggle-disabled3").click(function(){ 
    state = !state; 
    $widget3.multiselect(state ? 'disable' : 'enable'); 
}); 

没有雪茄,我是一个兔子洞。

回答

0

想通了一个程序员比我更好:)

各州必须也分成唯一ID的帮助。的两次点击发生的原因如下:

  1. 切换第一格,状态变为启用
  2. 切换第二个div,状态假定为被使能,并且执行切换到禁用(它已经是)
  3. 等等。

工作的jsfiddle: http://jsfiddle.net/x9k72tr2/1/

工作代码:

var $widget1 = $("#select1").multiselect(); state1 = true; 
var $widget2 = $("#select2").multiselect(); state2 = true; 
var $widget3 = $("#select3").multiselect(); state3 = true; 

$("#toggle-disabled1").click(function(){ 
    state1 = !state1; 
    $widget1.multiselect(state1 ? 'disable' : 'enable'); 
}); 
$("#toggle-disabled2").click(function(){ 
    state2 = !state2; 
    $widget2.multiselect(state2 ? 'disable' : 'enable'); 
}); 
$("#toggle-disabled3").click(function(){ 
    state3 = !state3; 
    $widget3.multiselect(state3 ? 'disable' : 'enable'); 
});