当元素在标记名称中包含点时,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 日期时间选择器不显示
如何链接到markdown文件(目录)中包含点(。)或逗号(,)的标题?