jquery在循环select中的项时转义特殊字符
jquery escaping special charatcers while looping items in select
你能帮我解决下面的特殊字符问题吗。我有一个值要在select下拉列表中检查并删除它。但是select文本中有特殊字符,所以有些原因是它不起作用。请帮忙。
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>
我想我有一个解决方案。我所做的是使用Array.join
将selArray简化为一个字符串,然后使用String.replace
用反斜杠对特殊字符进行转义(这是正则表达式的惯例),然后使用正则表达式检查它是否与当前有问题的select元素的值匹配。
查看我的代码:
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形成的(现在已转义)字符串创建一个新的正则表达式。然后,根据以下行中每个选择元素的值进行测试:
if(re.test($(this).val())) $('#sel option[value="' + $(this).val() + '"]').remove()
其中,如果所述条件返回true,则删除所述有问题的选择元素。
希望这能有所帮助!
以下是我上面评论的答案,您的一些语法不正确。
<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。
此外,连接选择器时缺少引号。
以上代码将适用于您。
试试这个。。
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()
}
});
<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>
相关文章:
- 还原转义特殊字符
- Javascript中的正则表达式问题转义特殊字符
- 正在转义Javascript中的特殊字符,以便在MySql中使用它们
- 如何转义ajaxed数据中的特殊字符
- 转义javascript中的特殊字符以在javascript中使用它们
- Regex允许某些特殊字符-转义问题
- jquery在循环select中的项时转义特殊字符
- javascript(jquery)函数中的转义特殊字符
- 正则表达式转义空格和特殊字符
- EXTJS,如何转义特殊字符
- js:转义特殊字符
- 如何在按键时转义特殊字符和非英语字符
- 使用javascript构建html代码时转义特殊字符
- JQuery&Java servlet:转义特殊字符
- 如何在javascript拆分方法中转义特殊字符
- 如何在Javascript中转义特殊字符(<,>,",',&)将转义数据从一个文本框传递到另一个文本框
- 如何使用jQuery post()从文本区域转义特殊字符
- jQuery转义特殊字符失败
- 使用jQuery的css选择器,转义特殊字符
- 如何在jquery中转义特殊字符