Допустим, у нас есть следующий код:
<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);
});
Вы можете использовать length
и index
чтобы получить эти числа
var elems = $(".addproduct.151")
elems.on('click', function() {
var total = elems.length;
var this_one = elems.index(this);
});
Чтобы ответить на ваш вопрос, поскольку он изначально сформулирован, "если я нажму 3-ю вниз", которую я интерпретирую как 3-й элемент с этим классом в любом месте страницы независимо от происхождения:
$('.product').on('click', function(e) {
var products = $('.product').toArray();
var id = products.indexOf(this);
console.log(id);
})
Примечание. Индекс начинается с 0, поэтому, если вы хотите распечатать "3", вам придется печатать индекс + 1;
$
как функцию, прежде чем она будет определена как единица ... вы поместили этот код в блок скрипта, который происходит до того, как вы включили jquery.js? Вы можете продублировать ошибку с помощью: var x = undefined; x();
, Также, возможно, посмотрите на: stackoverflow.com/questions/7975093/…
Используйте index()
если он имеет родителя.
$('#parentDiv a').on('click',function(){
var thisNumber = $(this).index();
console.log(thisNumber);
});
eq()
для определения индекса элемента или обход DOM для доступа к связанным элементам внутри. Инкрементные идентификаторы никогда не являются лучшим планом.