Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Возможно ли сделать скрипт проще? (https://javascript.ru/forum/jquery/19154-vozmozhno-li-sdelat-skript-proshhe.html)

Dudo4nick 27.07.2011 16:27

Возможно ли сделать скрипт проще?
 
Добрый день! Скрипт работает, но я новичок, и подозреваю, что можно было бы сделать проще. Как вы думаете?
По щелку на области карты становится видимым только тот блок, чей класс совпадает с id у "кликнутой" area:

$(document).ready(function(){
    $("area").click(function(){
	var $state = $(this).attr('id');
	$('.'+$state).addClass('active').siblings().removeClass('active')
       
    });
});

Буду рад вашим замечаниям!

melky 27.07.2011 16:34

$(document).ready(function(){
    $("area").click(function(){

	$('.'+this.id ).addClass('active').siblings().removeClass('active')
       
    });
});


обьясните, зачем добавлять блоку класс и убирать его у потомков ? в чем магия ? :)
.addClass('active').siblings().removeClass('active')

kobezzza 27.07.2011 16:42

Цитата:

Сообщение от melky (Сообщение 115672)
обьясните, зачем добавлять блоку класс и убирать его у потомков ? в чем магия ? :)
.addClass('active').siblings().removeClass('active')

хм...я не понял про что ты) siblings - это смежные элементы, а не потомки, так что тут всё логично: активному элементу ставится класс, а у всех смежных он удаляется)

Dudo4nick 27.07.2011 16:44

Но ведь если я не уберу класс у потомков сиблингов, то у меня их станет постепенно много видимых. А нужен только один!

И да - спасибо!

kobezzza 27.07.2011 16:47

Блин) где вы потомков нашли?)
<div>Какой то активный блок блок</div>
<div>Смежный блок</div>
<div>Смежный блок</div>
<div>Смежный блок</div>
<div>Смежный блок</div>

метод siblings выбирает все смежные блоки (ну или по фильтру указанному в методе) от активного

melky 27.07.2011 17:08

слова перепутал, прошу прощения :)

ну тогда запоминать прошлый эл и убирать класс у него, а не у всех разом

$(document).ready(function(){
    var last;
    $("area").click(function(){

        if( last ) last.removeClass('active');
	last = $('.'+this.id ).addClass('active');
       
    });
});


Часовой пояс GMT +3, время: 09:44.