2010-10-12 186 views
29

我剛開始第一次使用jquery,所以我不確定我所做的是否正確。我想要做的是非常基本的,我有一個腳本,它是在加載MVC視圖時爲文本框添加一個css水印。當元素包含標記名稱中的點時,Jquery選擇器不工作

要選擇我做以下元素:

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

然後在我的腳本添加CSS watermarkclass它在「this.val()的長度。」聲明失敗。

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包含在它裏面一個點的選擇不工作。有誰知道爲什麼或如何解決這個問題?

+0

你甚至可以在id屬性中完全停下來嗎? – 2010-10-12 09:24:01

+0

例如http://stackoverflow.com/questions/448981/what-c​​haracters-are-valid-in-css-class-names – 2010-10-12 09:24:30

+0

可能的重複[如何讓jQuery選擇元素與。 (期間)在他們的ID?](http://stackoverflow.com/questions/350292/how-do-i-get-jquery-to-select-elements-with-a-period-in-their-id) – 2010-10-12 09:25:53

回答

60

我認爲你應該用雙反斜槓來避開這個點:$("#Department\\.DeptName")請參閱here

+12

如Joril所說,可以用兩個反斜槓來完成點的轉義。還有另一種方法將點作爲一個文字來處理,這與這個問題相關但不適合(因此,我將其作爲註釋發佈):如果違規選擇器位是屬性選擇器而不是類或ID,那麼您可以用引號將整個東西包裝爲文字:'$(「input [name = department.deptname]」)'不起作用,但是'$(「input [name ='department.deptname']」 )'確實。 – 2013-01-22 17:23:15

+0

@ Pauld'Aoust,幫助我解決了我的問題。 – JMS10 2013-07-30 18:23:20

+0

這對我有效。謝謝! – 2014-01-03 23:37:34

1

您正在嘗試訪問類別爲DeptName#Department。你應該用兩個反斜槓(如Joril所說)逃脫。

有關更多信息,請參閱JQuery Selectors

0

$("input[name='department.deptname']")等其他語法將工作,如果你有寫作jQuery的控制權。我正在使用Kendo的Spring MVC,因此我無法訪問jQuery代碼。 Spring MVC <form>標籤自動將.放入適用的位置。例如。如果用戶有地址..因此現場城市將變爲user.address.city(或address.city)。如果我將Spring MVC分解爲多種形式,那麼它會擾亂我的後端邏輯。它也分散本應該是一個單一的形式。另一種方法是將後端上的User對象弄平...再次,不是很乾淨。我不確定,但Dojo在這種情況下工作。

相關問題