Я поддерживаю графический интерфейс, построенный с использованием JQuery. В одной части графического интерфейса,
для редактирования данных можно открыть несколько вкладок.
Когда открывается новая вкладка, она создается путем клонирования содержимого первой вкладки и
обновление полей ввода в div.
Новая вкладка получает уникальный идентификатор на основе индекса вкладки, но все
другие идентификаторы в клонированном элементе вкладки такие же, как и в исходном элементе вкладки.
Теперь, похоже, это вызывает проблемы, поскольку идентификаторы не уникальны.
Больше. При выборе поля ввода в Firefox 3.6.8 работает следующее:
$('#tabs-2 #scriptName').val( data.name );
Это выбирает вкладку div с идентификатором tabs-2, а затем выбирает вход
поле внутри этого div с идентификатором scriptName и устанавливает его значение. Сейчас
это не работает в Chrome или Firefox 3.0.19.
Иерархия DOM выглядит примерно так
<div id="tabs">
<div id="tabs-1">
...
<input id="scriptName"/>
...
</div>
...
<div id="tabs-2">
...
<input id="scriptName"/>
...
</div>
</div>
Одним из решений было бы сделать все идентификаторы с клонированным содержимым вкладки
div уникален, но это похоже на грубую силу. Это должно быть
можно обращаться к содержимому внутри div более независимым способом
без указания уникального идентификатора.
Клонирование всего div при создании новой вкладки, конечно,
грубый взлом, более элегантным решением было бы повторно использовать тот же div, но
изменить содержимое в зависимости от выбранной вкладки, но это так
построен прямо сейчас, и, к сожалению, он был разработан и протестирован с использованием более поздней
Браузер Firefox, где работал этот селектор.
Перед публикацией РЕДАКТИРОВАТЬ
Я нашел много связанных вопросов с ответами, которые давали некоторые подсказки о том, как решить эту проблему, когда я вставил свой вопрос, отредактированный в автономном режиме, но я в любом случае отправляю этот вопрос, поскольку всегда приветствуются хорошие предложения о том, как решить эту проблему. 1023 *
EDIT
Я сейчас пробую подход класса, у меня есть одна проблема, хотя некоторые поля ввода используют метки с атрибутом for, атрибут for должен указывать на уникальный идентификатор. Но это можно решить, пропустив атрибут for и сделав вместо этого поле ввода вложенным элементом.