Селектор Jquery не работает, когда элемент содержит точку в имени тега - PullRequest
32 голосов
/ 12 октября 2010

Я только начал использовать jquery в первый раз, так что я не уверен, правильно ли то, что я делаю. То, что я пытаюсь сделать, является очень простым, у меня есть скрипт, который добавляет водяной знак CSS в текстовые поля при загрузке в представлении MVC.

Чтобы выбрать элемент, я делаю следующее:

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);
}

}

Сценарий отлично работает, когда идентификатор элемента равен "DepartmentDeptName", как будто селектор не работает, когда идентификатор элемента содержит точку внутри него. Кто-нибудь знает, почему или как обойти эту проблему?

Ответы [ 3 ]

65 голосов
/ 12 октября 2010

Я думаю, что вы должны избежать точки с двойной обратной косой чертой: $("#Department\\.DeptName") См. здесь .

1 голос
/ 12 октября 2010

Вы пытаетесь получить доступ к #Department с классом DeptName.Вы должны убежать с двумя обратными слешами (как сказал Джорил).

См. JQuery Selectors для получения дополнительной информации.

0 голосов
/ 13 декабря 2013

Альтернативные синтаксисы, такие как $("input[name='department.deptname']"), будут работать, если у вас есть контроль над написанием jQuery.Я использую Spring MVC с Kendo и, следовательно, у меня нет доступа к коду jQuery.Тег Spring MVC <form> автоматически ставит . везде, где это применимо.Например, если у пользователя есть Адрес .. таким образом, поле города станет user.address.city (или address.city).И если я разбиваю пружинный MVC на несколько форм, это портит мою внутреннюю логику.Это также разбрасывает то, что должно было быть единственной формой.Другой альтернативой является выравнивание объекта User на бэкэнде ... опять же, не очень чистое.Я не уверен, но Додзё работал по такому сценарию.

...