Идентификация элементов по постоянному классу и динамическому идентификатору

0

На моем веб-сайте у меня есть несколько элементов, устанавливающих таким образом: 1. class= 'up' id = '1' 2. class= 'up' id = '2' 3. class= 'up' id = '3' 4. class= 'up' id = '4' и т.д. (количество неизвестных элементов)

Моя проблема заключается в попытке идентифицировать их в javascript. Я попытался использовать следующий код (JQuery) для выбора определенного элемента:

$('.up#'+ id)....

Однако это, похоже, терпит неудачу. id вы видите, содержит переменную, переданную в эту функцию. Он передается из события щелчка и настраивается таким образом:

$('.up').click(function(){
    some_function(this.id);
});

some_function принимает этот id, и это единственный аргумент, переданный ему.

Я не знаю, почему это терпит неудачу, спасибо за любую помощь!

2 ответа

3
Лучший ответ

Значения id CSS не могут начинаться с цифры, поэтому селектор .up#1 недействителен (как и селектор #1). Если вы измените свои значения id чтобы начать с буквы (обычно я использую x если у меня есть что-то более полезное, которое я могу использовать, например, x1, x2 и т.д.), Эти селекторы будут работать (при условии, конечно, что элементы существуют как когда вы используете селектор).

(Эта цифра - это ограничение CSS, HTML и DOM фактически не заботятся о ваших значениях id, если они уникальны.)


Замечание: очень редко вы хотите квалифицировать селектор id (с именем тега, классом и т.д.). id уникальны на странице, и поэтому не нуждаются в дополнительной квалификации. Для этого используются прецеденты, в основном, только для таргетинга на элемент, если он также имеет данный тег или класс и игнорирует его, если это не так, но в 99,9% случаев вам просто нужно #id.

  • 0
    Я также наткнулся на это на проекте. Предложением было бы поставить какой-то префикс перед цифрами, например .up#n1 .
  • 0
    Не в HTML5: «Любая строка со следующими ограничениями: должна быть длиной не менее одного символа и не должна содержать пробелов». W3.org/TR/html-markup/global-attributes.html#common.attrs.id
Показать ещё 8 комментариев
0

Вы должны поставить символ перед id, как это.

<element id="e1" class="up">

$('#e' + id) //reference the element by id

Ещё вопросы

Сообщество Overcoder
Наверх
Меню