#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
У меня есть HTML-файл, содержащий это:
<span id="id1"> text 1</span>
<span id="id2"> text 2</span>
<span id="id3"> text 3</span>
<a class="mark" href="#id1">mark text 1</a>
<a class="mark" href="#id2">mark text 2</a>
<a class="mark" href="#id3">mark text 3</a>
Если я нажму на одну из <a>
ссылок, я хочу, чтобы соответствующий диапазон изменил цвет текста на красный, а весь остальной цвет текста вернул на черный, как они были, так что только последняя нажатая ссылка делает ее назначение отображаемым красным.
Это способ сделать это:
$("a.mark").on('click', function(e) {
$("a.mark").attr( 'href').css('color', 'black') ;
$(this).attr('href').css( 'color', 'red') ;
}
);
Комментарии:
1. Все это можно сделать в CSS с
:target
помощью селектора
Ответ №1:
Существует встроенный селектор css :target
, который выполнит то, что вы пытаетесь сделать с помощью javascript.
http://css-tricks.com/on-target/
span:target{color:red}
:target
выберет любой идентификатор, указанный хэшем в URL, поэтому: /index.html#span1 нацелен на идентификатор span1
Ответ №2:
Вот что вы хотите:
JsFiddle: http://jsfiddle.net/eGMqh/
HTML:
<span id="id1"> text 1</span>
<span id="id2"> text 2</span>
<span id="id3"> text 3</span>
<a class="mark" href="#id1">mark text 1</a>
<a class="mark" href="#id2">mark text 2</a>
<a class="mark" href="#id3">mark text 3</a>
JavaScript:
$(function () {
// Handler for .ready() called.
$("a.mark").on('click', function (e) {
$("span").css("color", "black");
$($(this).attr("href")).css('color', 'red');
});
});
Комментарии:
1. Что, если на странице есть другие, не связанные с ней,
span
ы? Ониcolor: black
также будут установлены.2. Действительно, но я мог бы просто присвоить соответствующим промежуткам класс.
Ответ №3:
Закройте, просто удалите .attr('href')
:
$("a.mark").on('click', function (e) {
$("a.mark").css('color', 'black');
$(this).css('color', 'red');
});
Если вы хотите, чтобы цвет промежутка изменился, используйте:
$("a.mark").on('click', function (e) {
$("span").css('color', 'black');
$($(this).attr('href')).css('color', 'red');
});
Ответ №4:
Закрыть.
$("a.mark").on('click', function(e) {
$("a.mark").each(
function() {
$($(this).attr('href')).css('color', 'black') ;
}
);
$($(this).attr('href')).css( 'color', 'red') ;
});
Мы удаляем href
каждый a.mark
из них, а затем извлекаем этот элемент, устанавливая его цвет на черный (кстати, рассмотрите возможность использования классов вместо прямых цветовых стилей).
Затем мы берем href
атрибут только того элемента, на который нажата кнопка, и устанавливаем для этого элемента значение color red
.
Ответ №5:
Вы были близки:
Это сработало для меня…
$("a.mark").on('click', function(e) {
$("a.mark").css('color', 'black') ;
$(this).css( 'color', 'red') ;
}
);