Сделайте jquery .attr ("href", "new url") на нескольких объектах, а не на одном - PullRequest
1 голос
/ 30 июля 2011

У меня есть сайт, который использует, например, элемент html id="some_id" несколько раз, и я хочу изменить все эти элементы с помощью jquery, но когда я запускаю код jquery: $("#some_id").attr("href", "new url"); Или, например, $("#some_id").text("new text"), я изменяю толькопервый элемент / объект / ссылка.

Например:

<a id="username">username1</a>
<a id="username">username1</a>

Jquery, который редактирует первый элемент:

$("#username").text("username2"); 

Как мне отредактировать оба элемента с помощью jquery.

Ответы [ 3 ]

2 голосов
/ 30 июля 2011

У вас не может быть повторяющихся идентификаторов.

Вместо этого сделайте их классом.

<a class="username">username1</a>
<a class="username">username1</a>
$(".username").text("username2");

Или сделайте идентификаторы уникальными:

<a id="username_1">username1</a>
<a id="username_2">username1</a>
$('a[id^="username_"]').text("username2");

Этот использует attribute-starts-with-selector [документы] для выбора <a> элементов, где идентификатор начинается с username_.

0 голосов
/ 30 июля 2011

Прежде всего, наличие двух элементов с одинаковым id является недопустимым HTML. Вместо этого присвойте им одинаковый атрибут class:

<a class="username">username1</a>
<a class="username">username1</a>

Затем используйте следующий JavaScript:

$('.username').text('username2');

Однако ваш пример кода не соответствует вашему заголовку, поэтому это не изменит href тегов привязки, а только их текст. Чтобы изменить href обоих, позвоните attr, как указано в заголовке этого вопроса.

0 голосов
/ 30 июля 2011

Это потому, что вы можете использовать идентификатор только один раз на каждой странице, и только один из ваших элементов выбирается в первую очередь. Вместо этого используйте класс.

...