需要具有包含特殊转义(撇号)字符的属性的 Css 选择器

Posted

技术标签:

【中文标题】需要具有包含特殊转义(撇号)字符的属性的 Css 选择器【英文标题】:Need Css Selector with attribute containing special escape (apostrophe) character 【发布时间】:2015-02-28 23:23:40 【问题描述】:

我正在尝试使用 jQuery css 选择器来查找使用属性规范的元素。问题是有时属性的值包含撇号,如下所示:

<ul id="mylist">
    <li data-abrv="N">None</li>
    <li data-abrv="W'A">With'Apos</li>
</ul>

我试过了

$('#mylist li[data-abrv="W'A"]')

$('#mylist li[data-abrv="W\'A"]')

...但似乎两者都不起作用。这可能吗?如果有,怎么做?

注意:我无法控制 html 内容。

【问题讨论】:

应该可以:$('#mylist li[data-abrv="W\'A"]').html()。所以不知道你的问题是什么?!编辑:看到它:jsfiddle.net/rsj8Lzwv 我同意。您在其中转义单引号的 sn-p 应该可以工作。检查选择器的另一个不太明显的部分是否损坏。例如,可能 ID 在 DOM 中不是唯一的。 这个问题缺少一些上下文,例如,如何你怎么称呼这段代码?也许您只是将其称为 before 特定元素在 DOM 中可用 【参考方案1】:

它似乎有效。

$('#mylist li[data-abrv="W\'A"]').css(color:'red');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul id="mylist">
    <li data-abrv="N">None</li>
    <li data-abrv="W'A">With'Apos</li>
</ul>

【讨论】:

我无法反驳它在这里工作。 @@AWolff 可能是正确的,调用的上下文可能是问题所在。【参考方案2】:
$('#mylist li[data-abrv*="\'"]')  

通过此选择器查看demo,您可以选择data-abrv包含'single cot的所有li

【讨论】:

听起来确实不像预期的行为,顺便说一句,为什么 OP 的代码不起作用? OP 不是要选择特定元素,而不是在该属性中包含单引号的所有元素。

以上是关于需要具有包含特殊转义(撇号)字符的属性的 Css 选择器的主要内容,如果未能解决你的问题,请参考以下文章

jsStringFormat() 和带有 JSON 的撇号

c中关于转义字符!!

如何在 JavaScript 函数中使用单引号(撇号)转义 JSON 值

解析ldap过滤器以转义特殊字符

如何转义属性文件键中的特殊字符?

正则中需要转义的特殊字符小结