jQuery使用含特殊字符的加密类名作选择器时报无法识别表达式语法错误
报错原因
类名中包含%、=等CSS选择器预留的特殊字符,直接拼接进选择器字符串时,jQuery会将这些字符识别为选择器语法的一部分,而非类名的内容,因此抛出无法识别表达式的语法错误。
解决方案
方案1:使用$.escapeSelector转义类名(jQuery 3.0+ 适用)
jQuery 3.0及以上版本提供了内置的转义方法,可自动处理选择器中的特殊字符:
var className = "order_enc_YUluWTo6ODA4OTczNjQ3MjAzOTc0OA%3D%3D"; // 转义类名中的特殊字符 var escapedCls = $.escapeSelector(className); $('input:checkbox.' + escapedCls).each(function() { this.checked && arr.push($(this).val()); });
方案2:结合hasClass过滤(全版本兼容)
先选中所有复选框,再通过hasClass方法匹配目标类名,该方法直接接收字符串参数,不需要走选择器解析,完全规避特殊字符问题,兼容性最强:
var className = "order_enc_YUluWTo6ODA4OTczNjQ3MjAzOTc0OA%3D%3D"; $('input:checkbox').filter(function() { return $(this).hasClass(className); }).each(function() { this.checked && arr.push($(this).val()); });
内容的提问来源于stack exchange,提问作者Syedmahdi Raza
相关产品推荐
相关产品推荐

