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

时间:2010-10-12 09:19:53

标签: javascript model-view-controller jquery-selectors

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

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

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

然后在我的脚本中添加css水印类,它在“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在其中包含一个点时,选择器不起作用。有谁知道为什么或如何解决这个问题?

3 个答案:

答案 0 :(得分:65)

我认为你应该用双反斜杠来逃避点:$("#Department\\.DeptName")here

答案 1 :(得分:1)

您正在尝试使用课程#Department访问DeptName。你应该用两个反斜杠逃脱(正如Joril所说)。

有关详细信息,请参阅JQuery Selectors

答案 2 :(得分:0)

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