Нумерация всех классов одного типа на странице

0

Допустим, у нас есть следующий код:

<a class="addproduct 151">product info</a>
<a class="addproduct 151">product info</a>
<a class="addproduct 151">product info</a>
<a class="addproduct 151">product info</a>
<a class="addproduct 151">product info</a>

Я хочу иметь возможность подсчитать, сколько из того же класса находится на странице. Затем, нажав на конкретный, он сообщает мне, какой из них... так что... если я нажму 3-ю, он напечатает "3" на консоли.

У меня есть этот код:

$("addproduct 151").each(function(index) {
  $(this).addClass('number' + index);
});
  • 0
    зачем вам это? Вы можете использовать eq() для определения индекса элемента или обход DOM для доступа к связанным элементам внутри. Инкрементные идентификаторы никогда не являются лучшим планом.
  • 0
    О, отлично, видите, я учусь сейчас, я не знал этого раньше. Можете ли вы дать мне знать, как этот код будет выглядеть для желаемого результата?
Показать ещё 6 комментариев
Теги:

3 ответа

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

Вы можете использовать length и index чтобы получить эти числа

var elems = $(".addproduct.151")

elems.on('click', function() {

    var total    = elems.length;
    var this_one = elems.index(this);

});

FIDDLE

  • 0
    Я продолжаю получать "undefined не является функцией" со всеми этими опциями
0

Чтобы ответить на ваш вопрос, поскольку он изначально сформулирован, "если я нажму 3-ю вниз", которую я интерпретирую как 3-й элемент с этим классом в любом месте страницы независимо от происхождения:

$('.product').on('click', function(e) {
  var products = $('.product').toArray();
  var id = products.indexOf(this);
  console.log(id);
})

http://jsfiddle.net/r4NJT/1/

Примечание. Индекс начинается с 0, поэтому, если вы хотите распечатать "3", вам придется печатать индекс + 1;

  • 0
    Спасибо за ваш ответ, он отлично работает на скрипке. Я просто не уверен, почему, когда я использую его на своем сайте, я получаю «Ошибка типа: undefined не является функцией» Просто расстраивает. Я думаю, мне придется выяснить это. Еще раз спасибо!
  • 0
    Я предполагаю, что вы пытаетесь использовать переменную $ как функцию, прежде чем она будет определена как единица ... вы поместили этот код в блок скрипта, который происходит до того, как вы включили jquery.js? Вы можете продублировать ошибку с помощью: var x = undefined; x(); , Также, возможно, посмотрите на: stackoverflow.com/questions/7975093/…
0

Используйте index() если он имеет родителя.

$('#parentDiv a').on('click',function(){
    var thisNumber = $(this).index();
    console.log(thisNumber);
});

http://jsfiddle.net/XSk98/

Ещё вопросы

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