javascript - jquery 在 select 中循环项目时转义特殊字符

标签 javascript jquery

您能帮我解决以下特殊字符问题吗? 我有一个值要检查选择下拉列表并将其删除。但是您选择的文本中有特殊字符,所以有些它不起作用。 请帮忙。

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 使用反斜杠转义特殊字符(这是正则表达式的约定) ,然后使用正则表达式检查它是否与当前相关选择元素的值匹配。

查看我的代码:

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,则删除相关的选择元素。

希望这有帮助!

关于javascript - jquery 在 select 中循环项目时转义特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36197897/

相关文章:

javascript - Raphael ID 在 iPad 上与在浏览器上不同

javascript - 访问指令的隔离范围与嵌入的内容

javascript - $window .on ("scroll") 仅在调用它的最后一个指令中工作

php - 在html中对齐div内的不同元素

javascript - 按百分比调整大小的图像按钮

javascript - 为什么 Firebase 无法识别我的 Firebase 实例? "call Firebase App.intializeApp()"

javascript - ScrollView子元素获取偏移量

javascript - 如何在 React FLUX 中创建 API 调用?

jquery - 显示 : none on container element breaks jquery absolute positioning calculation childrens child elements

javascript - 隐藏表行的问题