Не могу изменить id элемента
Здравствуйте, жители JavaScript.ru
Есть HTML код с неизвестным количеством ссылок у которых одинаковый ид
<a id="555" onClick="test();return false;" href="сайт1">сайт1</a>
<a id="555" onClick="test();return false;" href="сайт2">сайт2</a>
<a id="555" onClick="test();return false;" href="сайт3">сайт3</a>
При нажатии на ссылку у неё должен смениться ид на 777, и должен выполниться скрипт
function test() {
var id_link;
$(document).ready(function () {
id_link = $('#777').attr('href');
});
//и т.д.
}
function close() {
document.getElementById('container').style.display = 'none';
}
При нажатии на close() ид должен смениться на исходный
Скрипт должен выполняться для каждой ссылки в отдельности
Никак не могу это сделать
Пробовал делать так
onClick="this.id='777';test();this.id='555';return false;"
но каждый раз загружаемая ссылка остаётся в скрипте, т.е. при нажатии сначала на сайт2, а потом на сайт1 ссылка не перезагружается и загружается окно сайт2, вместо сайт1
|
ID на странице должен быть уникальным.
Не понял...
1. id не может быть одинаковый у нескольких элементов, не ждите нормальной работы от такой разметки
2. вместо attr лучше использовать prop
3. onClick в аттрибутах — страшный моветон
4. не понятно зачем менять айди перед выполнением скрипта
Если по клику нужно в id_link положить текущую ссылку, то код будет такой:
$(function () {
$('a').click(function() {
var id_link = '';
id_link = $(this).prop('href');
close();
});
});
А в чём принципиальное различие между prop и attr
Мне не нужны все ссылки, как сделать выбор не по тегу а по классу?
prop() - для работы со свойствами узла, attr() - для работы с атрибутами. Есть тонкое различие между понятием свойства и атрибута. Скажем, attr('checked') == 'checked', но prop('checked') == true. Более того, attr вернет значение атрибута узла из разметки, а prop - реальное значение свойства. Т.е. в некоторых версиях jQuery, attr('checked') == 'checked' даже если prop('checked') == false. На самом деле, в большинстве случаев большой разницы нет, но, используя prop, можно избежать некоторых странных ошибок.
> Мне не нужны все ссылки, как сделать выбор не по тегу а по классу?
Если нужен выбор по классу, то используйте селектор класса. Это же jQuery, можно использовать любой валидный CSS селектор. $('a.someClass'), например, или $('.someClass > a.someClass2[href$=someUrl]').
Спасибо всем, скрипт заработал как надо.
Вы не забыли что идентификатор не должен начинаться с цифр ?