切换多个菜单需要2次点击

时间:2016-01-23 08:47:11

标签: jquery menu toggle dropdown

我正在设置一个表单,其中我有多个下拉列表,每个下拉列表都由一个按钮单独启用。其中有7个。我需要一个用户能够按下按钮列表,然后打开和关闭他们想要的许多按钮。

正如您在下面的JSFiddle中所看到的,如果您尝试单击" Toggle Disabled"然后在" Toggle Disabled 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被破坏,它也会混乱所有多重选择。所以我尝试改变它,希望它也能解决问题:

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');
});

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

1 个答案:

答案 0 :(得分:0)

在比我更好的程序员的帮助下计算出来。:)

状态也需要分为唯一ID。发生两次点击是因为如下:

  1. 切换第一个div,状态转为启用
  2. 切换第二个div,假设状态为启用,并执行以切换为禁用(已经是)
  3. 等等。
  4. 工作的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');
    });