Как выбрать все теги привязки с определенным текстом
дал несколько ссылок:
<a class="myclass" href="...">My Text</a>
Как выбрать якоря, соответствующие классу и с некоторым конкретным текстом. например, выберите все якоря с классом: 'myclass' и text:'My Text'
6 ответов:
вы можете создать пользовательский селектор, подобный
:contains
точных совпадений:$.expr[':'].containsexactly = function(obj, index, meta, stack) { return $(obj).text() === meta[3]; }; var myAs = $("a.myclass:containsexactly('My Text')");
Если вас беспокоит только текст якоря содержит конкретная строка, пойдите с решением @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>
слегка улучшенная версия (со вторым отделка
во-первых, выберите все теги содержащие 'мой текст'. Затем для каждого точного совпадения, если оно соответствует условию, делайте то, что вы хотите сделать.
$(document).ready(function () { $("a:contains('My Text')").each(function () { $store = $(this).text(); if ($store == 'My Text') { //do Anything..... } }); });
если вы не знаете класс нужного объекта и просто хотите перейти после текста ссылки можно использовать
$(".myClass:contains('My Text')")
если вы даже не знаете, какой это элемент (например, a, P, link,...) вы можете использовать
$(":contains('My Text')")
(просто оставляя часть перед
:
пустой.)Я должен добавить здесь, что он вызывает все элементы, начиная с
<html>
-тег вниз к нужному элементу. Решение, которое я мог бы предоставить, это добавление.last()
к нему, но только этот работает, если есть только один элемент, чтобы найти. Может быть, сбди. знает лучшее решение здесь.на самом деле, это должно быть дополнение к принятому ответу, особенно к вопросу @Amalgovinus.