атрибуты, не найденные селектором атрибутов jquery
-
09-09-2019 - |
Вопрос
Мне нужно переспрашивать мой старый вопрос, наверное, мне не следовало задавать его в час ночи :P
Кажется, что некоторые атрибуты не найдены с помощью селектора атрибутов jquery:
$("*[some=value]");
Пока кажется, что я не могу использовать атрибут действия формы и атрибут src img.Есть ли где-нибудь список атрибутов, которые не работают, чтобы я мог написать для них собственные селекторы?
Еще раз спасибо!
Редактировать: Кажется, никто не верит, что некоторые селекторы работают не так, как ожидалось.Посмотрите на этот пример:На этот сайт (на котором есть jquery 1.3 для поджигания) есть форма, которая выглядит следующим образом:
<form style="display: inline;" method="get" action="list">
(он находится в раскрывающемся списке «Поиск текущих загрузок»).Если вы откроете Firebug и попробуете этот селектор:
$("form[action=list]");
вы НЕ сможете выбрать форму.В атрибуте действия нет ничего особенного.То же самое касается источника изображения логотипа на этой странице:
<img alt="Logo" src="/p/aost/logo?logo_id=1238551994"/>
Селектор, который не работает:
$("img[src=/p/aost/logo?logo_id=1238551994");
Конечно, я могу использовать подстановочные знаки, но это не то, что мне нужно.
Решение
Не существует «списка» неподдерживаемых атрибутов, потому что его не должно быть;это ошибка в jQuery.
Вот открытые билеты по этому поводу:
- Невозможно выбрать форму с помощью атрибута действия
- attr «действие» формы и фильтр атрибутов селекторов
- селектор по атрибуту "src" не работает так же, как в 1.2.6
Очевидно, общим знаменателем ошибок является то, что jQuery сравнивает указанную вами строку селектора с полным URL-адресом, а не с фактическим атрибутом action/src, как он определен в HTML.Это объясняет, почему атрибутEndsWith или атрибутСодержит селекторы в этом случае работают.
Я бы рекомендовал просто присвоить форме/изображению класс/идентификатор и покончить с этим.
Другие советы
Все зависит от того, какую версию jQuery вы используете.
До версии 1.3 вы могли использовать обозначение @:
$("*[@name=value]")
Так что, возможно, добавление @ поможет.
Помимо этого, вам следует ввести значение атрибута точно то же, что определено в разметке - например.если вы пытаетесь найти изображение с помощью src="http://example.com/dog.jpg"
, не делайте этого, потому что это не сработает:
$("img[src=dog.jpg")
поскольку он будет пытаться найти изображения с помощью src равный в «dog.jpg», не содержащий его.
Если вы хотите искать атрибуты, определяющие только его части, я бы предложил прочитать Селекторы API jQuery страница.Например, чтобы получить все изображения с помощью src содержащий "dog.jpg", вы можете использовать:
$("img[src*=dog.jpg]")
Аналогичным образом вы можете найти элементы, атрибуты которых начинаются или заканчиваются определенными значениями/строками.