Подтвердить что ты не робот

Как выбрать все теги привязки с определенным текстом

Учитывая несколько тегов привязки:

<a class="myclass" href="...">My Text</a>

Как выбрать привязки, соответствующие классу, и с определенным текстом. например, выберите все привязки с классом: "myclass" и текст: "Мой текст"

4b9b3361

Ответ 1

$("a.myclass:contains('My Text')")

Ответ 2

Вы можете создать настраиваемый селектор, похожий на :contains для точных совпадений:

$.expr[':'].containsexactly = function(obj, index, meta, stack) 
{  
    return $(obj).text() === meta[3];
}; 

var myAs = $("a.myclass:containsexactly('My Text')");

Ответ 3

Если вас беспокоит только то, что текст привязки содержит определенную строку, перейдите к решению @Dave Morton. Если, однако, вы хотите точно соответствовать определенной строке, я бы предложил что-то вроде этого:

$.fn.textEquals = function(txt) {
    return $(this).text() == txt;
}

$(document).ready(function() {
    console.log($("a").textEquals("Hello"));
    console.log($("a").textEquals("Hefllo"))
});

<a href="blah">Hello</a>

Немного улучшенная версия (со вторым параметром триммера):

$.fn.textEquals = function(txt,trim) {
    var text = (trim) ? $.trim($(this).text()) : $(this).text();
    return text == txt;
}

$(document).ready(function() {
    console.log($("a.myclass").textEquals("Hello")); // true
    console.log($("a.anotherClass").textEquals("Foo", true)); // true
    console.log($("a.anotherClass").textEquals("Foo")); // false
});

<a class="myclass" href="blah">Hello</a>
<a class="anotherClass" href="blah">   Foo</a>

Ответ 4

Сначала выберите все теги, содержащие "MY text". Затем для каждого точного соответствия, если оно соответствует условию, сделайте то, что вы хотите сделать.

$(document).ready(function () {
    $("a:contains('My Text')").each(function () {
        $store = $(this).text();

        if ($store == 'My Text') {
            //do Anything.....
        }
    });
});

Ответ 5

Если вы не знаете класс желаемого объекта и хотите просто пойти после текста ссылки, вы можете использовать

$(".myClass:contains('My Text')")

Если вы даже не знаете, какой элемент (например, a, p, link,...), вы можете использовать

$(":contains('My Text')")

(просто оставляя часть до : пустой.)

Я должен добавить здесь, что он вызывает все элементы, начинающиеся с <html> -Tag вниз до нужного элемента. Решение, которое я мог бы предоставить, добавляет к нему .last(), но этот работает только при наличии только одного элемента. Может быть, сбды. знает лучшее решение здесь.

Собственно, это должно быть добавлением к принятому ответу, особенно к вопросу @Amalgovinus.

Ответ 6

Я думаю, что это должно работать для точного матча.

$("a.myclass").html() == "your text"