jQuery一个调用几个动作



阅读一些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);

但是它不工作,没有错误,也没有操作。

是否有更好的方法来定义选择器?是否有一种方法可以使用一个调用来执行该命令?

谢谢!

您的选择器中似乎有一个错别字。另外,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");

或者更好,使用Ids:

<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");

也许我在这里错过了什么,但是为什么你不能只是做:

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

最新更新