你可以帮我解决下面的特殊字符问题。 我有一个值来检查选择下拉列表并将其删除。但是选择的文本中有特殊的字符,所以它有些不起作用。 请帮忙。
selArray = ['option (1)']
$('selArray').each(function(index, item) {
$('#sel option[value="+item+"]').remove()
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<select name="sel" id="sel">
<option value="opt100">opt100</option>
<option value="option (1)">option (1)</option>
<option value="33">opt33</option>
</select>
&#13;
答案 0 :(得分:1)
我想我有一个解决方案。我所做的是使用Array.join
将selArray缩减为字符串,然后使用String.replace
使用反斜杠(正则表达式的约定)转义特殊字符,然后使用正则表达式检查如果它匹配当前选择元素的值。
请参阅我的代码:
selArray=['option (1)']
$('#sel option').each(function(){
var test = selArray.join('|').replace(/\(|\)/gi, '\\$&')
var re = new RegExp(test, 'i')
if(re.test($(this).val())) $('#sel option[value="' + $(this).val() + '"]').remove()
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<select name="sel" id="sel">
<option value="opt100">opt100</option>
<option value="option (1)">option (1)</option>
<option value="33">opt33</option>
</select>
在行中:
var test = selArray.join('|').replace(/\(|\)/gi, '\\$&')
正则表达式/\(|\)/gi/
查找开括号或闭括号的每个实例。替换正则表达式\\$&
基本上是在每次匹配之前放置一个反斜杠。如果您不熟悉正则表达式,我建议使用RegExr,这是一个非常有用的资源。
这一行:
var re = new RegExp(test, 'i')
使用加入selArray形成的(现在转义的)字符串创建一个新的正则表达式。然后根据以下行中每个select元素的值对其进行测试:
if(re.test($(this).val())) $('#sel option[value="' + $(this).val() + '"]').remove()
其中如果条件返回true,则删除有问题的select元素。
希望这有帮助!
答案 1 :(得分:0)
试试这个..
selArray=['option (1)']
$('#sel option').each(function(index,item){
a = $(this).val();
//console.log(a);
if($.inArray(a,selArray)!== -1)
{
//console.log($.inArray(a,selArray));
$(this).remove()
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<select name="sel" id="sel">
<option value="opt100">opt100</option>
<option value="option (1)">option (1)</option>
<option value="33">opt33</option>
</select>
&#13;
答案 2 :(得分:0)
以上是我上面评论的答案,你的一些语法不正确。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<select name="sel" id="sel">
<option value="opt100">opt100</option>
<option value="option (1)">option (1)</option>
<option value="33">opt33</option>
</select>
<script>
selArray = ['option (1)'];
$(selArray).each(function(index, item)
{
var opt = $('#sel').find('option[value="' + item + '"]');
$('#sel').find('option[value="' + item + '"]').remove();
});
</script>
说明:转换为jQuery对象时,不需要引用selArray。
此外,连接选择器时缺少引号。
以上代码适合您。