jQuery: передача объединенного идентификатора в ситуацию, связанную с селектором

0

Я использую jQuery DatePicker для выбора элементов с "#", все работает нормально, когда я помещаю "прямую" строку в селектор, но как только я начинаю конкатенировать, результат очень подозрительный. Возможно, этот скриншот на консоли объясняет, с чем я борюсь с Изображение 174551

HTML:

<input id="wizard:wizard-body:datePiece_picker" name="wizard:wizard-body:datePiece_picker" type="text" value="">

Javascript:

function replaceAll(str, find, replace) {
    return str.replace(new RegExp(find, "g"), replace);
}
var TYPEDIALOG = "wizard:wizard-body:";

var id = replaceAll(TYPEDIALOG, ":", "\\\\:")+ "datePiece_picker";
if ($("#" + id).length != 0) {
    $("#" + id).datepicker({
        dateFormat : "dd/mm/yy"
    });
}
Теги:

1 ответ

1
Лучший ответ

Ваша замена добавила слишком много обратных косых черт:

http://jsfiddle.net/BaypN/

var id = replaceAll(TYPEDIALOG, ":", "\\:") + "datePiece_picker";

Как побочная заметка, это, вероятно, довольно хороший аргумент, чтобы избежать : в идентификаторах элементов. Кроме того, datePiece_picker может быть классом, а не частью идентификатора.

  • 0
    Круто, я так делал, но не могу понять, почему это не сработало в первый раз, еще раз спасибо PS: за ":", это старая страница JSF

Ещё вопросы

Сообщество Overcoder
Наверх
Меню