помогите добавить class/id элементу
Здравствуйте всем!
Есть готовая фотогалерея, в которой не реализовано выделение активной картинки (т.е. нажимаем на картинку и у нее присваивается border 1px white к примеру). Есть задача сделать это выделение. Сам я в JS не разбираюсь, прошу помощи у вас: Как добавить класс active при нажатии на картинку? код события которое происходит при onclick:
//dom
function vsig_dom(obj) {return document.getElementById(obj); }
//switch image without reload
function switchimg(t_ident, t_ident_b) {
//topimage
var topimg = "topimg" + t_ident_b[2];
t_ident[6] = t_ident[6].replace(/'/g, "'"); //replace ' with ' in alt-title
t_ident[4] = t_ident[4].replace(/'/g, "'"); //replace ' with ' in link-title
t_ident[6] = t_ident[6].replace(/&/g, "&"); //replace & with & in alt-title
//switch caption
var t_cap = (typeof (vsig_dom(topimg).parentNode.href) !== "undefined") ? (vsig_dom(topimg).parentNode.parentNode.getElementsByTagName("div")) : (vsig_dom(topimg).parentNode.getElementsByTagName("div"));
if (t_cap.length >= 1) {
t_cap[0].innerHTML = (t_ident[1] !== "" || t_ident[2] !== "") ? ("<span>" + t_ident[1] + "</span><span>" + t_ident[2] + "</span>") : "";
}
//switch link
if (typeof (vsig_dom(topimg).parentNode.href) !== "undefined") {
vsig_dom(topimg).parentNode.href = t_ident[3];
vsig_dom(topimg).parentNode.title = t_ident[4];
vsig_dom(topimg).parentNode.target = t_ident[5];
}
//switch image
vsig_dom(topimg).src = t_ident_b[0] + "vsig_images/" + t_ident[0];
vsig_dom(topimg).alt = t_ident[6];
vsig_dom(topimg).title = t_ident[6];
vsig_dom(t_ident).id='active';
}
Рабочая галерея тут |
Цитата:
|
по моему здесь JS не нужен
можно CSS обойтись добавить
.vsig_thumb a:active img { border: 1px solid white; }
можно почитать http://htmlbook.ru/css/active |
Цитата:
ну еще в машинах разбираюсь :D |
Pavel M., так "нажал" и "навел" кагбе разные действия и последствия будут разные... После нажатия изменения остаются, а после "убирания наведения" всё возвращается на круги своя... :)
|
Цитата:
|
Цитата:
|
Цитата:
только если Новосиб:) |
Цитата:
|
Цитата:
|
Цитата:
|
у тебя в css
.vsig_thumb img { ... border: medium none !important; ... } значит тогда или убери !important или добавь !important в правило с :active |
Цитата:
но работает и правда только при наведении мышь убираешь убирается border |
тогда javascript нужен - класс у выбранного элемента установить
и на него повесить стили это надо 'мотор с кузова Газели в гараж занести' без этого никак. |
Цитата:
я думал тут всего 1 строчку дописать... |
Цитата:
|
Цитата:
|
Pavel M., и вот такое ты таки советовал? :D
<style type="text/css">
p:active {
color: red;
}
</style>
<p>Бивас, тест!</p>
Ты хоть сам-то тесть, что другим предлогаешь... ;) |
Цитата:
|
Цитата:
в первом сообщении темы было > т.е. нажимаем на картинку и у нее присваивается border 1px white тут сss бы справился а теперь все так сложно, что только ты ему поможешь |
Цитата:
|
Грузчики, ksa. :lol:
|
измени:
//switch image without reload
function switchimg(t_ident, t_ident_b) {
на:
//switch image without reload
function switchimg(t_ident, t_ident_b, a) {
a.style.border = "1px solid #FF0000";
а вызов в <а>: onclick="switchimg(vsig_4_0[7],vsig_4_0_b, this);return false;" должно заработать. |
Цитата:
a.firstChild.style.border = "1px solid #FF0000"; отлично работает! |
Еще осталась проблемка - как сделать чтобы при клике на следующую уменьшенную картинку border у предыдущей очищался?
Сделал так (ниже), но не работает, подскажите что не так? у меня есть предположения что переменную prev_thumb надо гдето в другом месте сохранять
var prev_thumb= "";
a.firstChild.active_thumb = 0;
if (a.firstChild.active_thumb == 0) {
prev_thumb.firstChild.style.border = "";
prev_thumb.firstChild.active_thumb = 0;
a.firstChild.style.border = "2px solid #FFFFFF";
a.firstChild.active_thumb = 1;
prev_thumb = a;
}
|
magnateg, начинай уже делать полные тестовые примеры... Это увеличит твои шансы на помощь. ;)
|
Цитата:
могу дать ссылку на работающий пример, это вы имели ввиду? |
Цитата:
Вот например http://javascript.ru/forum/jquery/23...tml#post135349 |
Решил проблему:
function switchimg(t_ident, t_ident_b, abc) {
if (abc != "1")
{
if (vsig_dom('active_thumb')) {
vsig_dom('active_thumb').id = ""
}
abc.firstChild.id ="active_thumb";
}
//topimage
var topimg = "topimg" + t_ident_b[2];
t_ident[6] = t_ident[6].replace(/'/g, "'"); //replace ' with ' in alt-title
t_ident[4] = t_ident[4].replace(/'/g, "'"); //replace ' with ' in link-title
t_ident[6] = t_ident[6].replace(/&/g, "&"); //replace &amp; with & in alt-title
//switch caption
var t_cap = (typeof (vsig_dom(topimg).parentNode.href) !== "undefined") ? (vsig_dom(topimg).parentNode.parentNode.getElementsByTagName("div")) : (vsig_dom(topimg).parentNode.getElementsByTagName("div"));
if (t_cap.length >= 1) {
t_cap[0].innerHTML = (t_ident[1] !== "" || t_ident[2] !== "") ? ("<span>" + t_ident[1] + "</span><span>" + t_ident[2] + "</span>") : "";
}
//switch link
if (typeof (vsig_dom(topimg).parentNode.href) !== "undefined") {
vsig_dom(topimg).parentNode.href = t_ident[3];
vsig_dom(topimg).parentNode.title = t_ident[4];
vsig_dom(topimg).parentNode.target = t_ident[5];
}
//switch image
vsig_dom(topimg).src = t_ident_b[0] + "vsig_images/" + t_ident[0];
vsig_dom(topimg).alt = t_ident[6];
vsig_dom(topimg).title = t_ident[6];
}
|
Цитата:
$(this).prev().css({'border':0}) |
Подскажите пожайлуста.
Есть ли в файле стилей что-то наподобии $([id^*$='F']) ? Обойтись без addClass хотелось бы $([id^='F']) .addClass('F') , ...стиль уже привязанн к АйДи F, а этот АйДи ичнутый на + еденицу( i=o..... i++) и таким образом их уже несколько , но зато с единым корнем F. А поэтому , стиль #F{border:3;color:FFF } #F-1...#F-15 :) уже не ловит ...Не писать же #F-1б,#F-2...,#F-15 {border:3;color:FFF } :) |
Цитата:
<style type="text/css">
p[id^='item_'] {
color: red;
}
</style>
<p id='item_1'>Item 1</p>
<p id='item_2'>Item 1</p>
<p id='item_3'>Item 1</p>
|
Цитата:
Работает !!! Я вижу ,что Вы и по Квери спец как в чистом ДжЭс. Откуда такие глубочайшие знания , Гуру КСА? |
Цитата:
А конкретно эти сведения можно почерпнуть в любой документации по селекторам атрибутов... Например тут http://www.xiper.net/learn/css/selec...selectors.html Почитай, не поленись... ;) |
$(this).css({'border':200px}).siblings.css({'border':0px})
Есть еще 1 часто используемый вариант $(this).css({'border':200px}) (в Паренте )$('img').css({'border':0px}) Чтоб добиться результата во втором случае-нужно поменять местами пока не заработает |
Цитата:
. Подскажите пожайлуста, как выудить сумму из такого случая,а то застрял <div id='Nav_1'>xxxx</div> var d= $(this).parent().parent().attr('id').split('Nav_')[1]+143 alert(d) Проблему я ,вообще-то уже решил,но лишь изначально изменив отсчет ич-айди с и=0 на и=-1.Но все равно БЫЛ БЫ ОЧЕНЬ ПРИЗНАТЕЛЕН ЗА РЕШЕНИЕ alert(d) |
Цитата:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(document).ready(function(){
$('[id^="Nav_"]').each(function(){
alert($(this).text())
});
});
</script>
</head>
<body>
<div id='Nav_1'>xxxx</div>
<div id='Nav_2'>yyyy</div>
<div id='Nav_3'>zzz</div>
</body>
</html>
|
Та не...
Я имел ввиду var f= [1] var h=[34] alert(f+h) ...Или страницу, где почитать |
Андрей38, начинай таки делать сам тестовые примеры... ;)
|
Цитата:
|
| Часовой пояс GMT +3, время: 16:33. |