我正在设置一个表单,其中我有多个下拉列表,每个下拉列表都由一个按钮单独启用。其中有7个。我需要一个用户能够按下按钮列表,然后打开和关闭他们想要的许多按钮。
正如您在下面的JSFiddle中所看到的,如果您尝试单击" Toggle Disabled"然后在" Toggle Disabled 2,"等等,它不会注册第二次点击。
我尝试过使用:
$("#toggle-disabled2").click(function(){
state = !state;
$widget2.multiselect(state ? 'disable' : 'enable');
});
然后我意识到这没有任何意义。
我当时想知道你是否可以用.hasClass这样做,但我不知道我是如何在这个环境中实现的。
编辑: 我发现有很多2个点击问题,比如这个问题: Toggle function requiring 2 clicks
尽管如此,我仍然很难用我的小部件来做这件事。还注意到有多个变量,即使一个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');
});
没有雪茄,我是在一个兔子洞里。
答案 0 :(得分:0)
在比我更好的程序员的帮助下计算出来。:)
状态也需要分为唯一ID。发生两次点击是因为如下:
工作的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');
});