Множество связанных с стилем вопросов автозаполнения jquery (yow), но ни одного, которые хотят "соответствовать стилю родительского ввода".
Мой фон
Я программист на Java / C ++, у которого также есть довольно большой опыт работы с JS ... в PDF. PDF использует совершенно другую объектную модель, чем HTML, и я только начинаю к ней привыкать. Я совсем новичок в jQuery.
Мне бы хотелось, чтобы стиль элемента управления автозаполнения JQUI соответствовал стилю соответствующего ввода. Стиль рамки, шрифт, размер шрифта и т. Д.
Вопрос
Это приложение для генерации форм, которое на самом деле не говорит на CSS (насколько это касается пользователей). Каждое поле может иметь свой собственный шрифт и размер шрифта, цвет фона и так далее. Я надеюсь, что нет, но, черт возьми, Джим, я программист, а не графический дизайнер! Не мой отдел.
Во всяком случае, это программно сгенерированный HTML (выполненный на Java), поэтому о некоторых вещах, которые могут быть простыми в ручной разметке, не может быть и речи, а некоторые вещи, которые почти невозможны, довольно тривиальны .
Каждое поле ввода имеет идентификатор, поэтому создать правильный селектор очень просто. Что делать с этим селектором? Получение и анализ атрибута style в скрипте во время выполнения выглядит как Way Too Much Work. Должен быть лучший способ.
В идеале это было бы примерно так:
var stylesToCopy = $("#fieldID").???;
$(???).magicallyApplyStyles(stylesToCopy);
Глядя на разметку, генерируемую автозаполнением (в firebug), я не вижу идентификатора или чего-либо, что помечает этот конкретный UL как «прикрепленный» к данному входу. И я не вижу ничего добавленного к входу, чтобы прикрепить его другим способом. Grr.
Так что же делать парню?
Дальнейшее исследование: autocomplete()
возвращает выбранный вход, а не сам элемент управления автозаполнением. Grr.
Хмм ...
Каждый ввод может иметь свой стиль (все встроенные), поэтому я не думаю, что методика на основе классов будет работать. Это также означает, что мне нужен селектор, который может выбрать правильный UL.
Идея
Немного глупо, но это сработает: добавьте div с идентификатором в тело для каждого автозаполнения и используйте его как appendTo
. Селектор тогда становится "первым ребенком идентификатора такого-н-так". Я не уверен, как это повлияет на позиционирование автозаполнения ... может быть, совсем нет. Они уже находятся в разных ветвях на разных глубинах в дереве DOM.
$("#such-n-so:first-child").css(someAttr, someVal);
с css
и этот хак, у меня есть рабочая теория ... но это похоже на "долгий путь". Надеюсь, один из вас, гуру JQuery, может подсказать мне что-нибудь более чистое.