Ответ 1
Как насчет этого:
$('.existing_ad .index').filter(function() {
return $(this).text() == index;
}).parents('.existing_ad');
У меня есть список div, которые содержат тег p
, классифицированный как index
. Текстовое содержание этих тегов p
- это число от 1 до n (хотя, вероятно, не более 30-40). У меня был следующий селектор, который отлично работал при предварительном тестировании:
var ad = $('.existing_ad .index:contains('+index+')').parents('.existing_ad');
Где index
- числовой индекс, полученный из тега p
, а .existing_ad
- класс родительского div
. Как я уже сказал, это отлично работало... пока я не пошел с более высокими цифрами. Например, когда индекс 1, он выбирает .existing_ad
, где индекс HAS A 1 IN IT, например. 1, 10-19, 21, 31 и т.д.
Как я могу получить ТОЛЬКО индекс n?
Как насчет этого:
$('.existing_ad .index').filter(function() {
return $(this).text() == index;
}).parents('.existing_ad');
Если вы его много используете, вы можете создать расширение
$.expr[":"].containsExact = function (obj, index, meta, stack) {
return (obj.textContent || obj.innerText || $(obj).text() || "") == meta[3];
};
$('div:containsExact('John')
будет соответствовать <div>John</div>
, но не <div>Johnny</div>
Для исходного вопроса это будет
var ad = $(".existing_ad .index:containsExact('"+index+"')").parents('.existing_ad');