2015-05-22 4 views
2

я добавлял класс к элементу, например так: .addClass('middle_item')Можно добавить идентификатор к элементу, который уже имеет идентификатор

Тогда я заметил, что класс в уникален, поэтому я должен изменить его на идентификатор .attr("id", 'middle_item'); , правильно?

Итак, могу ли я добавить еще один идентификатор элемента, который уже имеет идентификатор?

Если да, то любой способ получить и сохранить первый идентификатор в переменной?

Example Fiddle here

+0

Нет особой причины, чтобы изменить класс на идентификатор только потому, что это единственный элемент с этим классом. Элемент может иметь только один идентификатор, но он может иметь много классов. – Pointy

+0

@Pointy i только хочу изменить класс на id, потому что я узнал, что только элемент может иметь этот класс, поэтому класс должен быть id –

+2

. Вы должны не узнавать это понятие, потому что это действительно бессмысленно. – Pointy

ответ

2

Нет, это не допускается. , , в то время как существует различие между HTML 4 и HTML 5 в отношении «правовых ценностей ID», одна из вещей, которые они имеют в общем, что пробела не допускается в значениях:

HTML 4 Определения - http://www.w3.org/TR/html4/types.html#type-id

Знаки ID и NAME должны начинаться с буквы ([A-Za-z]), за которой может следовать любое количество букв, цифр ([0-9]), дефис ("-"), подчеркивание (" _ "), двоеточие (": ") и периоды (". ").

HTML 5 Определения - http://www.w3.org/TR/html5/dom.html#the-id-attribute

Значение должно быть уникальным среди всех идентификаторов в домашнем поддереве элемента и должны содержать по крайней мере один символ. Значение не должно содержать пробелов.

Таким образом, без пробелов вы можете иметь только одно значение идентификатора.

2

Как @Pointy сказал, вы можете иметь только 1 ID элемента. Похоже, вы пытаетесь применить идентификатор или класс к <li>, чтобы захватить его позже? Если это так, есть лучшие способы получить средний элемент в списке с помощью jQuery, используя селектор :nth-child(), например, в сообщении this. Селекторная документация here.

2

У вас может быть только один id на элемент см. this answer for more details, поэтому вам нужно удалить предыдущий идентификатор, но это странно.

Все это рассматривается, вот как вы могли бы добиться этого, но я не думаю, что это на самом деле то, что вы хотите

$("#listitem1").removeAttr("id").attr("id", "newID")

В приведенном выше коде я СЦЕПЛЕНИЕ методы с помощью первого выбора #listitem1, затем удалив атрибут id и, наконец, применив новый идентификатор.

Кроме того, в вашем примере var i = $("middle_item").attr("id"); возвращает неопределенное значение, так как идентификатор не применяется, но если вы сделали вы сделали две ошибки: первая Вы писали $("middle_item"), когда он должен был $("#middle_item") и второй, потому что вы не первый удалить предыдущую id.

jQuery Docs

По JQuery 1.6,.Метод attr() возвращает undefined для атрибутов, которые не были установлены. Чтобы получить и изменить свойства DOM, такие как проверенные, выбранные или отключенные состояния элементов формы, используйте метод .prop().

Смежные вопросы