逃逸撇号从<;img。。。JQuery中的alt=

逃逸撇号从<;img。。。JQuery中的alt=,jquery,jquery-selectors,Jquery,Jquery Selectors,我刚刚在JQuery的一行中发现了一个bug,我不知道如何处理它 // Enable valid swatch images $.each(sizes, function (index, element) { $("#variations img[alt='" + element + "']") .parent().removeClass("swatchDisabled").addClass("swatchEnabled"); }); 问题出在img的选择器中。alt

我刚刚在JQuery的一行中发现了一个bug,我不知道如何处理它

// Enable valid swatch images
$.each(sizes, function (index, element) {
    $("#variations img[alt='" + element + "']")
         .parent().removeClass("swatchDisabled").addClass("swatchEnabled");
});
问题出在img的选择器中。alt属性值中有一个撇号。我不能轻易地更改alt值,但我需要使用它,因为它包含代码逻辑的一个重要值

有没有一种优雅的方法可以避开这个alt标记中包含的这个/任何撇号,这样JQuery就不会被它卡住

$("#variations img[alt='" + element.replace(/'/g, "\\'") + "']")

试着用代码替换撇号(字面意思,使用字符串替换):我想。。。HTML是从XSLT样式表输出的。我只是觉得在JQuery中处理这个问题可能更容易,而不用担心HTML。我已经有了转义模板,只是觉得我不应该转义alt属性值。我来试试看结果如何。谢谢你的参考-很好的页面。我所说的字符串替换是指javascript函数,比如在他的回答中使用的@Esailija,如果这让xDOk感到困惑的话,很抱歉。是的,我比较喜欢在JQuery中处理它。谢谢他们。我想我更喜欢这个P很好。您是在XSLT中转义alt属性,还是在JQuery中转义?我不引用这个选择器,但在我的JQuery脚本中引用过一次(我想)。@rwkiii如果alt属性有
(转义或不转义),那么您也必须转义查询(因为您使用
作为attr值字符串的分隔符)。这是html转义版本,我看不出有什么不同。我添加了
.replace
,它解决了我的问题。我假设它使用正则表达式。多年来我一直在使用正则表达式,但不是很多,所以我不太理解代码。我知道它解决了我的问题!谢谢你的帮助,很简单。在
/'/g
中,斜线分隔实际的正则表达式(仅与撇号字面匹配),然后指定额外的g lobal标志,这意味着字符串中的所有撇号都将被替换,而不仅仅是第一个撇号。第二个参数是要替换的内容,在本例中是
\'
。额外的反斜杠是为了避开反斜杠。