Учитывая несколько тегов привязки:
<a class="myclass" href="...">My Text</a>
Как выбрать якоря, соответствующие классу и с определенным текстом. Например, выберите все якоря с классом: 'myclass' и текстом: 'My Text'.
Учитывая несколько тегов привязки:
<a class="myclass" href="...">My Text</a>
Как выбрать якоря, соответствующие классу и с определенным текстом. Например, выберите все якоря с классом: 'myclass' и текстом: 'My Text'.
Вы можете создать собственный селектор, аналогичный :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>
Немного улучшенная версия (со вторым параметром 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>
Сначала выберите все теги, содержащие «МОЙ текст». Затем для каждого точного совпадения, если оно соответствует условию, делайте то, что хотите.
$(document).ready(function () {
$("a:contains('My Text')").each(function () {
$store = $(this).text();
if ($store == 'My Text') {
//do Anything.....
}
});
});
Если вы не знаете класс нужного объекта и просто хотите перейти по тексту ссылки, можно использовать
$(".myClass:contains('My Text')")
Если вы даже не знаете, какой это элемент (например, a, p, ссылка,...), вы можете использовать
$(":contains('My Text')")
(просто оставив часть перед :
пустой.)
Я должен добавить, что он выводит все элементы, начиная с <html>
-Tag, до нужного элемента. Я мог бы предложить решение, добавив к нему .last()
, но это работает, только если нужно найти только один элемент. Может сбд. знает лучшее решение здесь.
На самом деле, это должно быть дополнением к принятому ответу, особенно к вопросу @Amalgovinus.
Я думаю, что это должно работать для точного соответствия.
$("a.myclass").html() == "your text"
html()
применяется только к первому элементу в наборе совпавших элементов (api.jquery.com/html ). Вам нужен поток управления или итерация, чтобы пройти через каждую из привязок, таких как each()
.
- person dyoo; 04.02.2015
$('a.myclass[href]:contains("My Text")')
- person Marko Dumic; 15.03.2010
id
для указания якоря?
- person Blundering Philosopher; 10.11.2016