类名中的jQuery句点存储在var中
Posted
技术标签:
【中文标题】类名中的jQuery句点存储在var中【英文标题】:jQuery period in class name stored in var 【发布时间】:2011-11-15 11:41:03 【问题描述】:我有这个代码:
var imgId = this.id; //file1.jpg
还有这个:
$('.img\\' + imgId).remove();
所以问题是,我无法逃脱“。”因为它在var中,而不是之前。我能做什么?
【问题讨论】:
你的班级是.imgfile1.jpg
?
您有一个包含文件名的class
?为什么? src
已经包含文件名...
此外,选择器'.img\file1.jpg'
将被解释为'img\file1'
类和'jpg'
类,即'img\file1 jpg'
类。 “。” (dot) 是一个类选择器,ans 应该在 ids 或 classes 中转义(如“#”和其他“选择器”字符
【参考方案1】:
我可能误解了这个问题 - 但是,这行得通吗?
$('.img\\' + replace(imgId,'.','\.')).remove();
【讨论】:
【参考方案2】:你不能做类似$("#"+imgId, ".img").remove()
的事情
【讨论】:
【参考方案3】:使用.replace
替换它。
var imgId = this.id.replace('.', '/.'); //Or whatever other escaping is there.
【讨论】:
【参考方案4】:不要将文件名作为类/ID 的一部分存储在您的标记中。相反,使用 data- 属性:
<div class="img" data-filename="file1.jpg" />
然后在你的 jQuery 中:
$('.img[data-filename="'+imgId+'"]').remove();
【讨论】:
src
已包含文件名。将其存储在其他任何地方充其量是多余的。
@Tomalak - 假设您正在使用 img 元素,是的。但这从未在帖子中指定。可以很容易地使用输入/div/等。与图像相关(但不包含图像本身)。
@Justin:嗯,对。可能。在这种情况下,我仍然会做类似$(".img[src$='"+filename+"']").closest("div.container").remove()
的事情。【参考方案5】:
虽然句点是 html Id 中的有效实体,但我强烈建议您遵循不同的命名约定,特别是在 Id 值中不使用句点的命名约定。
【讨论】:
以上是关于类名中的jQuery句点存储在var中的主要内容,如果未能解决你的问题,请参考以下文章
从字符串中删除非数字字符(不包括句点和逗号)(即删除除数字、逗号和句点之外的所有字符)