我有一些jQuery代码,允许我在多选组合框中选择多个条目,而无需按Ctrl键。
这样做有效,但会影响正常的选择框,现在无法使用鼠标进行更改。
原始的jQuery代码是:
(function ($) {
$(document).ready(function () {
$("option").mousedown(function(e) {
this.selected = ! this.selected;
e.preventDefault();
return false;
});
});
})(jQuery);
当然,$("选项")选择器也适用于普通选择框,这就是它失败的原因。
我试图检测事件是否由带有"倍数"的选择框触发。属性,但无法弄清楚如何。以下因各种原因而无法工作,其中一个原因是事件是由选项触发的,而不是选择:
(function ($) {
$(document).ready(function () {
$("option").mousedown(function(e) {
if($(this).attr('multiple','multiple')) {
this.selected = ! this.selected;
e.preventDefault();
return false;
}
else {
return true;
}
});
});
})(jQuery);
关于如何做到这一点的任何想法?
啊,我不想包含多选的ID,因为在我的真实案例中,另一个多选也使用相同的代码。
答案 0 :(得分:2)
将要应用此行为的所有多选元素赋予新的CSS类 - 也许custom-multiselect
。
然后你可以在你拥有的代码中使用像.custom-multiselect option
这样的复合选择器......
(function ($) {
$(document).ready(function () {
$(".custom-multiselect option").mousedown(function(e) {
this.selected = ! this.selected;
e.preventDefault();
return false;
});
});
})(jQuery);
答案 1 :(得分:1)
您可以使用此选择器定位每个多选的选项:$('select[multiple] option')
。
此选择器定位<option>
内出现<select>
属性的每个multiple
。