jQuery一个调用几个动作

时间:2011-11-25 13:45:25

标签: jquery performance checkbox

阅读jQuery性能的几个指导原则我发现了这个功能:

而不是:

$('#legendGallery).draggable({containment:'#container'});
$('#caption').draggable({containment:'#container'});
$('#controls').draggable({containment:'#container'});

这样做:

$('#legendGallery, #caption, #controls').draggable({containment:'#container'});

(一次调用jQuery引擎应用了几个动作)

我想将这个概念应用于一系列复选框:

<input type="checkbox" class="largecheckbox" name="chk_wms[]" value="m1" />
<input type="checkbox" class="largecheckbox" name="chk_wms[]" value="m2" />
<input type="checkbox" class="largecheckbox" name="chk_wms[]" value="m3" />
<input type="checkbox" class="largecheckbox" name="chk_wms[]" value="m4" />

使用以下代码我想禁用几个复选框:

$('input:checkbox[name="chl_wms\[\]"][value="m1"]', 'input:checkbox[name="chl_wms\[\]"][value="m2"]', 'input:checkbox[name="chl_wms\[\]"][value="m3"]).prop('disabled', true);

但它不起作用,没有错误,也没有采取任何行动。

有没有更好的方法来定义选择器? 有没有办法使用一个单独的调用来执行该命令?

谢谢!

2 个答案:

答案 0 :(得分:3)

你的选民似乎有一个拼写错误。另外,jQuery转义字符是\\,每个选择器应该在一个字符串中。考虑到这一点,它应该是:

$('input:checkbox[name="chk_wms\\[\\]"][value="m1"], input:checkbox[name="chk_wms\\[\\]"][value="m2"], input:checkbox[name="chk_wms\\[\\]"][value="m3"]').prop('disabled', true);

通过确定它应该有用。

一种比属性选择器更好的替代方法是使用类。例如:

<input type="checkbox" class="largecheckbox flag-disabled" name="chk_wms[]" value="m1" />
<input type="checkbox" class="largecheckbox flag-disabled" name="chk_wms[]" value="m2" />
<input type="checkbox" class="largecheckbox flag-disabled" name="chk_wms[]" value="m3" />
<input type="checkbox" class="largecheckbox" name="chk_wms[]" value="m4" />    
----
$(".flag-disabled").prop("disabled", "disabled");

甚至更好,使用ID:

<input type="checkbox" class="largecheckbox" id="chk_wms[m1]" name="chk_wms[]" value="m1" />
<input type="checkbox" class="largecheckbox" id="chk_wms[m2]" name="chk_wms[]" value="m2" />
<input type="checkbox" class="largecheckbox" id="chk_wms[m3]" name="chk_wms[]" value="m3" />
<input type="checkbox" class="largecheckbox" id="chk_wms[m4]" name="chk_wms[]" value="m4" />    
----
$("#chk_wms\\[m1\\], #chk_wms\\[m2\\], #chk_wms\\[m3\\]").attr("disabled", "disabled");

答案 1 :(得分:0)

也许我在这里遗漏了一些东西,但为什么你不能这样做:

$('.largecheckbox').attr('disabled', 'disabled');