Подтвердить что ты не робот

Селектор JQuery не работает, когда элемент содержит точку в имени тега

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

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

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

Затем в моем script для добавления водяного знака 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);
}

}

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

4b9b3361

Ответ 1

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

Ответ 2

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

Подробнее см. JQuery Selectors.

Ответ 3

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