атрибуты не найдены селектором атрибутов jquery - PullRequest
6 голосов
/ 13 апреля 2009

Мне нужно повторно задать мой старый вопрос, я, вероятно, не должен был задавать его в 1:00: P

Кажется, что некоторые атрибуты не найдены с помощью селектора атрибутов jquery:

$("*[some=value]");

Пока что кажется, что я не могу использовать атрибут действия формы и атрибут src img. Есть ли где-нибудь список атрибутов, которые не работают, поэтому я могу написать для них собственные селекторы?

Еще раз спасибо!


Изменить: Кажется, никто не верит, что некоторые селекторы работают не так, как ожидалось. Посмотрите на этот пример: На этом сайте (на котором есть jquery 1.3 для разжигания огня) есть форма, которая выглядит следующим образом:

<form style="display: inline;" method="get" action="list">

(вокруг раскрывающегося списка «поиск текущих загрузок»). Если вы откроете firebug и попробуете этот селектор:

$("form[action=list]"); 

вы НЕ сможете выбрать форму. В атрибуте action нет ничего особенного. То же самое касается изображения логотипа на этой странице:

<img alt="Logo" src="/p/aost/logo?logo_id=1238551994"/>

Селектор, который не работает:

$("img[src=/p/aost/logo?logo_id=1238551994");

Конечно, я могу делать подстановочные совпадения, это не то, что мне нужно.

Ответы [ 2 ]

11 голосов
/ 13 апреля 2009

Нет «списка» неподдерживаемых атрибутов, потому что их не должно быть; это ошибка в jQuery.

Вот открытые билеты на это:

Очевидно, общий знаменатель между ошибками заключается в том, что jQuery сравнивает указанную строку селектора с полным URL-адресом, а не с фактическим атрибутом action / src, как он определен в HTML. Это объясняет, почему в этом случае работают селекторы attributeEndsWith или attributeContains .

Я бы порекомендовал просто дать форме / изображению класс / ID и покончить с этим.

4 голосов
/ 13 апреля 2009

Все зависит от того, какую версию jQuery вы используете.

До версии 1.3 вы могли использовать @ нотацию:

$("*[@name=value]")

Так что, возможно, добавление @ помогает.

Кроме этого, вы должны ввести значение атрибута точно так же, как оно определено в разметке - например, если вы пытаетесь найти изображение с src="http://example.com/dog.jpg", не делайте этого, потому что оно не будет работать:

$("img[src=dog.jpg")

, поскольку он будет пытаться найти изображения с src , равным «dog.jpg», не содержащим его.

Если вы хотите искать атрибуты, определяющие только его части, я бы рекомендовал прочитать страницу jQuery API Selector . Например, чтобы получить все изображения с src , содержащие"dog.jpg", вы можете использовать:

$("img[src*=dog.jpg]")

Аналогично, вы можете найти элементы, атрибуты которых начинаются или заканчиваются конкретными значениями / строками.

...