19.02.2013, 11:45
|
Профессор
|
|
Регистрация: 04.10.2010
Сообщений: 571
|
|
Где хранить id
На сайте несколько меню, которые генерируются скриптом. Например ul.#menu1 и ul.#menu2, у каждого элемента внутри свой айдишник.
Логично было бы хранить их как li.#1, li.#2, ... Но т.к. меню два, то айдишники элементов будут повторяться, чего быть не должно. Поэтому храню как li.data('id',1), li.data('id',2), ...
Насколько плох первый способ (li.#1, li.#2, ...)? Действительно ли так критичен повтор в атрибуте id?
|
|
19.02.2013, 11:50
|
Аспирант
|
|
Регистрация: 29.09.2008
Сообщений: 48
|
|
а почему не class?
|
|
19.02.2013, 12:39
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Shitbox2, а зачем вам эти как бы id?
Сообщение от Shitbox2
|
Действительно ли так критичен повтор в атрибуте id
|
Выборка по id вернет только один элемент с указанным id, причем какой из существующих - в спецификации не определено. И я подозреваю что каждый браузер как хочет так и делает. Не проверял, ибо не вижу необходимости в этом.
|
|
19.02.2013, 12:49
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от Shitbox2
|
Выборка по id вернет только один элемент с указанным id
|
Давнишние дебаты ЧаВО - часто задаваемые вопросы (faq)
|
|
19.02.2013, 12:55
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Deff, ты упустил один момент. Вопрос задан в контексте jQuery. А jQuery использует getElementById для селекторов типа #id. А getElementById возвращает только один элемент, причем какой из всех - спецификцией не определено.
|
|
19.02.2013, 14:58
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Если обернуть каждое меню в div c разными Id,
То достаточно просто обеспечить поиск идентичных Id в контексте данных разных оберток
<script src="http://code.jquery.com/jquery-latest.js"></script>
<div id=Wrp1>
<ul id=menu>Тут меню 1 </ul>
</div>
<div id=Wrp2>
<ul id=menu>Тут меню 2 </ul>
</div>
<script type="text/javascript">
var div1=$('#Wrp1');
var div2=$('#Wrp2');
alert($('#menu',div1).text()+'\n'+ $('#menu',div2).text())
</script>
|
|
19.02.2013, 15:49
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,112
|
|
Сообщение от Deff
|
$('#menu',div1).text()+
|
и каким боком здесь #menu учавствует?
|
|
19.02.2013, 16:22
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
<script src="http://code.jquery.com/jquery-latest.js"></script>
<div id=Wrp1>
<ul id=menu>Тут меню 1 </ul>
</div>
<div id=Wrp2>
<span>участвует?</span>
<ul id=menu>Тут меню 2 <span>и каким боком здесь #menu участвует?</span></ul>
</div>
<script type="text/javascript">
var div1=$('#Wrp1');
var div2=$('#Wrp2');
alert($('#menu',div1).text()+'\n\n'+ $('#menu span',div2).text())
</script>
|
|
19.02.2013, 17:02
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
рони,
Cуть задачи поставить две менюшки с идентичными тегами и разным контентом и по возможности или использовать один скрипт для их работы(к примеру скрытия вкладок) для обоих меню; либо два скрипта, - второй скрипт с минимальными правками:
Пока две версии правки для варианта c двумя скриптами:
поправить все ID во втором скрипте и самом контенте меню:
#menu на #menu-2,
либо обернуть каждое меню в свой div и заменить в скрипте:
"#menu" на "#menu",div2
Последний раз редактировалось Deff, 19.02.2013 в 17:07.
|
|
19.02.2013, 17:15
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,112
|
|
Deff,
Подскажите где про $('#menu',div1) такую выборку прочитать можно?
вот так бы я понял $("#Wrp2 #menu span").text()
Последний раз редактировалось рони, 19.02.2013 в 17:20.
|
|
|
|