Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Вставка текста при открытии спойлера (https://javascript.ru/forum/jquery/36194-vstavka-teksta-pri-otkrytii-spojjlera.html)

TrikS 06.03.2013 22:50

Вставка текста при открытии спойлера
 
Добрый день господа, прошу палками не бить, поиском пользовался но ответ на вопрос не нашел. Только учусь JQ и столкнулся со следующей проблемой. Создали спойлер
$(document).ready(function(){	
    $('.nyan').click(function(){
        $('div.splCont').toggle();
        return false;
    });
});


Соответственно при клике на див с классом nyan появляется div c классом splCont (изначально значение display:none ). Необходимо что бы при развернутом спойлере текст внутри дива nyan менялся с "РАЗВЕРНУТЬ" на "СВЕРНУТЬ".

Попробовал вот так:

$(document).ready(function(){
	
    $('.nyan').click(function(){
        $('div.splCont').toggle();
        return false;
	if ($('div.splCont').attr('display') != "none"){
		$('div.nyan').text("СВЕРНУТЬ");
	}
    });

});


Но не вышло. Где ошибся? Заранее большое спасибо.

ksa 06.03.2013 22:55

Цитата:

Сообщение от TrikS
Где ошибся?

display не атрибут некоего тега... Это свойство ЦСС.

TrikS 06.03.2013 23:24

Цитата:

Сообщение от ksa (Сообщение 239223)
display не атрибут некоего тега... Это свойство ЦСС.

Спасибо за уточнение. Изменил вид функции на

$(document).ready(function(){
	
    $('.nyan').click(function(){
        $('div.splCont').toggle();
        return false;
	if ($('div.splCont').css("display", "none")){
		$('div.nyan').text("СВЕРНУТЬ");
	}
    });
});


Результат неизменный. Видимо я не верно ставлю условие, либо какая-то синтаксическая ошибка.

Так же попробовал так

$(document).ready(function(){
	
    $('.nyan').click(function(){
        $('div.splCont').toggle();
        return false;
	if ($('div.splCont').css("display") == "block"){
		$('div.nyan').text("СВЕРНУТЬ");
	}
    });
});

Deff 06.03.2013 23:29

$(document).ready(function(){
	
    $('.nyan').click(function(){
        $('div.splCont').toggleClass('visible').toggle();
	if ($('div.splCont').hasClass('visible')){
		$(this).text("СВЕРНУТЬ");
	} else 	$(this).text("РАЗВЕРНУТЬ");
        return false;
    });

});

Deff 06.03.2013 23:33

Выложите HTML - при текущем Варианте нет вложенности и будет воздействие на соседние спойлеры

TrikS 06.03.2013 23:50

Цитата:

Сообщение от Deff (Сообщение 239227)
Выложите HTML - при текущем Варианте нет вложенности и будет воздействие на соседние спойлеры

Вложенности не будет. Спасибо огромное. Теперь сижу и пытаюсь расширить свои знания изучая Ваш способ. Он работает, просто стало интересно, что за класс visible Вы присвоили. Класс чего это, или это просто идентификационная метка?

Deff 07.03.2013 00:09

Цитата:

Сообщение от TrikS
. Класс чего это, или это просто идентификационная метка?

<script src="http://code.jquery.com/jquery-latest.js"></script>
<div>
<div class="splCont visible">ABC</div>
</div>
 <script>
var a = $("div.splCont").parent().html();
var b = $("div.visible").parent().html();
alert(a+'\n'+b)
$("div.splCont").html('BBB');
var b = $("div.visible").parent().html();
alert(b)
</script>

TrikS 07.03.2013 00:32

Правильно ли я понял:

$('div.splCont').toggleClass('visible').toggle(); // назначаем диву с классом splCont дополнительный класс visible. Назначается он при действии click, дальше по его наличию или отсутствию и выполняем условие.

Суть верна?

Deff 07.03.2013 00:43

Цитата:

Сообщение от TrikS
назначаем диву с классом splCont дополнительный класс visible. Назначается он при действии click, дальше по его наличию или отсутствию и выполняем условие.

Да
http://jquery-docs.ru/Attributes/toggleClass/#class
http://jquery-docs.ru/Attributes/removeClass/#class
http://jquery-docs.ru/Attributes/addClass/#class
http://jquery-docs.ru/Attributes/hasClass/#class

TrikS 07.03.2013 01:03

Вопрос закрыт, спасибо


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