Как выбрать все теги привязки с конкретным текстом - PullRequest
65 голосов
/ 15 марта 2010

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

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

Как выбрать якоря, соответствующие классу и определенному тексту. Например, выберите все якоря с классом «myclass» и текстом: «My Text»

Ответы [ 6 ]

117 голосов
/ 15 марта 2010
$("a.myclass:contains('My Text')")
13 голосов
/ 15 марта 2010

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

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

var myAs = $("a.myclass:containsexactly('My Text')");
4 голосов
/ 15 марта 2010

Если вас беспокоит только то, что текст якоря содержит определенную строку, используйте решение @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>

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

$.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>
3 голосов
/ 07 ноября 2014

Сначала выберите все теги, содержащие «МОЙ текст». Затем для каждого точного соответствия, если оно соответствует условию, делайте то, что вы хотите сделать.

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

        if ($store == 'My Text') {
            //do Anything.....
        }
    });
});
0 голосов
/ 15 сентября 2016

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

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

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

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

(просто оставив часть до : незаполненной.)

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

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

0 голосов
/ 31 января 2012

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

$("a.myclass").html() == "your text"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...