Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Выбрать все кроме... (https://javascript.ru/forum/jquery/18510-vybrat-vse-krome.html)

doniv 04.07.2011 14:23

Выбрать все кроме...
 
У меня есть такое древо:

<li>1</li>
<li>2</li>
<li>3</li>


Мне нужно, чтобы при клике на любом из li элементов скрывались все, кроме того, по которому был сделан клик. Какие есть варианты для реализации?

Заранее спасибо за ваши советы.

walik 04.07.2011 14:39

$('li').click(function() {
   $('li').hide();
   $(this).show();
});

trikadin 04.07.2011 14:46

Изучить html, css и javascript.

<style>
.hide_childs * {
 visibility: hidden;
}
.show {
 visibility: visible;
};
</style>

<script>
function hide(obj) {
document.getElementById("ul").className+= " hide_childs";
obj.className+= " show";
};
</script>

<ul id="ul">
<li onclick="hide(this)">A</li>
<li onclick="hide(this)">B</li>
<li onclick="hide(this)">C</li>
<li onclick="hide(this)">D</li>
</ul>

doniv 04.07.2011 14:57

Цитата:

Сообщение от walik (Сообщение 111706)
$('li').click(function() {
   $('li').hide();
   $(this).show();
});

Я приблизительно так и делаю, но проблема в том, что код срабатывает только один раз. Вот полная простыня в черновике:

$(".currency__item-link-active").click(function(){
             $(".currency__item").show(); //разворачиваем элементы
        });

        $(".currency__item-link").not(".currency__item-link-active").click(function(){

             var from       = 'USD';
             var to         = $(this).attr("title");
             var params = "amount=" + amount + "&from=" + from + "&to=" + to;

             var act = $(this).parent();

             $(".currency__item").removeClass("currency__item-active");
             $(this).parent().addClass("currency__item-active");
             $(".currency__item-link").removeClass("currency__item-link-active");
             $(this).addClass("currency__item-link-active");

             $(".currency__item").hide();

             $(act).show();

             $.ajax({
               type: "POST",
               url: "convert.php",
               data: params,
               beforeSend: function(){

               },
               success: function(convert){
                    $(".price__value").html(convert);
               }
             });
        });



<ul class="currency">
    <li class="currency__item currency__item-active"><a class="currency__item-link currency__item-link-active" title="USD" href="#dollar">$</a></li>
    <li class="currency__item"><a class="currency__item-link" title="EUR" href="#euro">€</a></li>
</ul>


Первый раз все срабатывает как надо, а второй раз уже не хочет обратно показывать все li элементы.

walik 04.07.2011 15:18

Вместо click используй live
замени:
$('...').click(//...

на
$('...').live('click', //...

doniv 04.07.2011 15:58

Цитата:

Сообщение от walik (Сообщение 111712)
Вместо click используй live
замени:
$('...').click(//...

на
$('...').live('click', //...

Так тоже работать не хочет.
Может это как-то со ссылкой связано? Я не могу понять в чем там вообще может быть проблема.

P.S. Пардон, плохо потестил. С лайвом все работает, просто из-за классов не все кнопки работали.

doniv 04.07.2011 18:28

Цитата:

Сообщение от walik (Сообщение 111706)
$('li').click(function() {
   $('li').hide();
   $(this).show();
});

Вопрос по хайд и шоу.
Как поставить условие, например:

Если хайд, то вот так, а если шоу, то так.

walik 04.07.2011 19:26

Что значит "Вот так", "то так" ? Подробнее.

doniv 04.07.2011 21:26

Цитата:

Сообщение от walik (Сообщение 111757)
Что значит "Вот так", "то так" ? Подробнее.

Например:

Если div#1 = hide, то действие №1.

walik 05.07.2011 11:52

if (!$('div#1').is(':visible'))
   //Действие №1


Это что ли ?


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