Учитывая несколько тегов привязки:
<a class="myclass" href="...">My Text</a>
Как выбрать привязки, соответствующие классу, и с определенным текстом. например, выберите все привязки с классом: "myclass" и текст: "Мой текст"
Учитывая несколько тегов привязки:
<a class="myclass" href="...">My Text</a>
Как выбрать привязки, соответствующие классу, и с определенным текстом. например, выберите все привязки с классом: "myclass" и текст: "Мой текст"
$("a.myclass:contains('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>
Немного улучшенная версия (со вторым параметром триммера):
$.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>
Сначала выберите все теги, содержащие "MY text". Затем для каждого точного соответствия, если оно соответствует условию, сделайте то, что вы хотите сделать.
$(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>
-Tag вниз до нужного элемента. Решение, которое я мог бы предоставить, добавляет к нему .last()
, но этот работает только при наличии только одного элемента. Может быть, сбды. знает лучшее решение здесь.
Собственно, это должно быть добавлением к принятому ответу, особенно к вопросу @Amalgovinus.
Я думаю, что это должно работать для точного матча.
$("a.myclass").html() == "your text"