Выбрать элемент на основе содержимого EXACT

У меня есть список 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?

Ответ 1

Как насчет этого:

$('.existing_ad .index').filter(function() {
    return $(this).text() == index;
}).parents('.existing_ad');

Ответ 2

Если вы его много используете, вы можете создать расширение

$.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');