当元素在标记名称中包含点时,Jquery 选择器不起作用

Posted

技术标签:

【中文标题】当元素在标记名称中包含点时,Jquery 选择器不起作用【英文标题】:Jquery selector not working when element contains dot in tag name 【发布时间】:2011-04-24 05:04:02 【问题描述】:

我刚开始第一次使用 jquery,所以我不确定我所做的是否正确。我要做的是非常基本的,我有一个脚本,它在 MVC 视图中加载时向文本框添加 css 水印。

要选择元素,我执行以下操作:

jQuery(document).ready(function()$('#Department.DeptName').addWatermark('input-watermarked', 'test'););

然后在我添加 css watermarkclass 的脚本中,它在“this.val().length”语句处失败。

jQuery.fn.toggleWatermark = function(watermarkedClass, watermarkText) 
if (this.hasClass(watermarkedClass)) 
    this.removeWatermark(watermarkedClass);

else if (this.val().length == 0) 
    this.addClass(watermarkedClass);
    this.val(watermarkText);

脚本在元素 id 为“DepartmentDeptName”的情况下工作正常,就好像当元素 id 在其中包含一个点时选择器不起作用。有谁知道为什么或如何解决这个问题?

【问题讨论】:

是否允许在 id 属性中使用句号? 例如***.com/questions/448981/… How do I get jQuery to select elements with a . (period) in their ID?的可能重复 How do I get jQuery to select elements with a . (period) in their ID?的可能重复 【参考方案1】:

我认为您应该使用双反斜杠转义点:$("#Department\\.DeptName") 请参阅here。

【讨论】:

正如 Joril 所说,可以使用两个反斜杠来转义点。还有另一种将点视为文字的方法,它与此问题相关但不适合(因此,我将其作为评论发布):如果有问题的选择器位是属性选择器而不是类或 ID,您可以将整个内容用引号括起来以将其视为文字:$("input[name=department.deptname]") 不起作用,但 $("input[name='department.deptname']") 可以。 @Pauld'Aoust,这对我的问题有所帮助。【参考方案2】:

您正在尝试使用类 DeptName 访问 #Department。你应该用两个反斜杠转义(正如 Joril 所说)。

请参阅JQuery Selectors 了解更多信息。

【讨论】:

【参考方案3】:

如果您可以控制编写 jQuery,则可以使用 $("input[name='department.deptname']") 等替代语法。我将 Spring MVC 与 Kendo 一起使用,因此我无法访问 jQuery 代码。 Spring MVC <form> 标签自动将 . 放在适用的地方。例如。如果用户有地址..因此字段城市将变为user.address.city(或address.city)。如果我将 Spring MVC 分解为多种形式,那么它会扰乱我的后端逻辑。它还分散了应该是单一形式的东西。另一种选择是在后端展平User 对象......再次,不是很干净。我不确定,但 Dojo 在这种情况下工作。

【讨论】:

以上是关于当元素在标记名称中包含点时,Jquery 选择器不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Django Forms - 当字段具有初始数据时,JQuery 日期时间选择器不显示

jQuery中数据的自定义选择器不起作用

matlab符号求解器:如何在答案中包含点运算符

如何链接到markdown文件(目录)中包含点(。)或逗号(,)的标题?

使用 jquery 设置后,Jquery :data() 选择器不起作用

动态 Jquery 选择器不起作用