2016-01-23 92 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'); 
});