我遇到了这个问题(下拉菜单是使用选择的插件)
我正在调用jquery函数。问题是,有一个多选项,第一个选项是“全部”,所有其他选项都存在
当选择“全部”时,将取消选择所有其他选项。
<select id="risk_mitigator_offer_1" name="risk_mitigator_offer_1[]"
class="input_field criteria_risk" style="width:302px;"
multiple onchange="checkAll(this)">
<option value="All">All</option>
<?php
$offers_off = array();
$_sql_off = mysql_query( 'SELECT * FROM mt_offers WHERE camp_id=' . $mysql['camp_id'] . ' AND deleted = "0" ORDER BY offer_id' );
if ($_sql_off)
{
while ($_data_off = mysql_fetch_assoc( $_sql_off ))
{?>
<option value="<?php echo $_data_off['offer_id']?>"><?php echo $_data_off['offer_name'];?></option>
<?php }
} ?>
</select>
function checkAll(obj)
{
var values = $(obj).val();
if (values)
{
for (var i = 0; i < values.length; i++)
{
if(values[i] == "All")
{
$(obj+" option[value!=All]").removeAttr("selected");
}
}
}
}
Error: Syntax error, unrecognized expression: [object HTMLSelectElement] option[value!=All]
throw new Error( "Syntax error, unrecognized expression: " + msg );
如何解决此问题?
我知道这可能是一个愚蠢的问题,问题在于这行代码:
$(obj+" option[value!=All]").removeAttr("selected");
答案 0 :(得分:1)
问题是obj
是一个HTMLSelectElement
对象,所以你不能像你想要的那样通过连接字符串来构造CSS选择器。而是过滤除“全部”之外的所有选项,并使用prop方法取消选择它们:
function checkAll(obj) {
var values = $(obj).val();
if (values) {
$(obj).find('option').filter(function() {
return this.value !== 'All';
}).prop('selected', false);
}
}