0

演示

我需要从所有选项中删除“选择”,而不需要包含“+”和“-”的选项

为什么不做这样的事情

$('#hidden :not(:contains(+)), #hidden :not(:contains(-))').removeAttr('selected');

或者

$('#hidden :not(:contains(+)):not(:contains(-))').removeAttr('selected');

谢谢你的帮助!


这需要我现场过滤产品...

产品有尺码,尺码有颜色,

因此,例如产品#1 的尺寸为“+9.0”,对于这个尺寸,只有红色和蓝色......

谢谢大家的帮助!每个人 +1

4

3 回答 3

3

我建议:

$('#hidden, #Size').change(function(){
    $(this).find('option').filter(function(){
        return $(this).text().match(/(\+|-)/);
    }).prop('selected', false);
});

JS 小提琴演示

但是请注意,如果option您试图阻止用户选择的那些 s 是标签,并且以下option元素代表一组选项,那么您最好只依赖 HTML 的本机行为,使用optgroup标签,例如:

<select multiple size="10" id="hidden">
    <option value="">none</option>
    <optgroup label="+9.0">
        <option value="">red</option>
        <option value="">blue</option>
        <option value="">green</option>
    </optgroup>
    <!-- other groups removed for brevity -->
    <optgroup label="-8.8">
        <option value="">red</option>
        <option value="">blue</option>
        <option value="">green</option>
    </optgroup>
</select>

JS Fiddle 演示(我修改了#hidden select元素)。

参考:

于 2013-10-09T17:45:13.993 回答
1

为什么要这样做?

如果您实际上不想进行这些选择,因为它们应该更代表一个标题。然后你可以使用 HTML 属性disabled
喜欢:

<option disabled = true value="">+9.0</option>

我希望这是你想要完成的。 jsFiddle

于 2013-10-09T17:45:29.380 回答
1

您所需要的只是:contents()选择器周围的引号并指出option

$(document).ready(function(){
    $("#hidden option:not(:contains('+'))").removeAttr('selected');
});

看我的小提琴

于 2013-10-09T17:46:35.390 回答