Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Где хранить id (https://javascript.ru/forum/jquery/35698-gde-khranit-id.html)

Shitbox2 19.02.2013 11:45

Где хранить id
 
На сайте несколько меню, которые генерируются скриптом. Например ul.#menu1 и ul.#menu2, у каждого элемента внутри свой айдишник.

Логично было бы хранить их как li.#1, li.#2, ... Но т.к. меню два, то айдишники элементов будут повторяться, чего быть не должно. Поэтому храню как li.data('id',1), li.data('id',2), ...

Насколько плох первый способ (li.#1, li.#2, ...)? Действительно ли так критичен повтор в атрибуте id?

ffx 19.02.2013 11:50

а почему не class?

danik.js 19.02.2013 12:39

Shitbox2, а зачем вам эти как бы id?
Цитата:

Сообщение от Shitbox2
Действительно ли так критичен повтор в атрибуте id

Выборка по id вернет только один элемент с указанным id, причем какой из существующих - в спецификации не определено. И я подозреваю что каждый браузер как хочет так и делает. Не проверял, ибо не вижу необходимости в этом.

Deff 19.02.2013 12:49

Цитата:

Сообщение от Shitbox2
Выборка по id вернет только один элемент с указанным id

Давнишние дебаты http://javascript.ru/forum/misc/9459...tml#post193838

danik.js 19.02.2013 12:55

Deff, ты упустил один момент. Вопрос задан в контексте jQuery. А jQuery использует getElementById для селекторов типа #id. А getElementById возвращает только один элемент, причем какой из всех - спецификцией не определено.

Deff 19.02.2013 14:58

Если обернуть каждое меню в 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

Цитата:

Сообщение от Deff
$('#menu',div1).text()+

и каким боком здесь #menu учавствует?

Deff 19.02.2013 16:22

<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>

Deff 19.02.2013 17:02

рони,
Cуть задачи поставить две менюшки с идентичными тегами и разным контентом и по возможности или использовать один скрипт для их работы(к примеру скрытия вкладок) для обоих меню; либо два скрипта, - второй скрипт с минимальными правками:
Пока две версии правки для варианта c двумя скриптами:

поправить все ID во втором скрипте и самом контенте меню:
#menu на #menu-2,

либо обернуть каждое меню в свой div и заменить в скрипте:
"#menu" на "#menu",div2

рони 19.02.2013 17:15

Deff,
Подскажите где про $('#menu',div1) такую выборку прочитать можно?
вот так бы я понял $("#Wrp2 #menu span").text()


Часовой пояс GMT +3, время: 06:42.