Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает кнопка через live (https://javascript.ru/forum/misc/23681-ne-rabotaet-knopka-cherez-live.html)

Dorian_bs 01.12.2011 20:58

Не работает кнопка через live
 
Всем привет!
Столкнулся с проблемой в live.

Например есть код:

<div class="test1">Кнопка</div>


$('.test1').live('click', function () {
    $(this).removeClass('test1').addClass('test2');
    alert();
});

$('.test2').live('click', function () {
    $(this).removeClass('test2').addClass('test1');
    alert();
});


Дело следующее.
При нажатии на "Кнопка" выполняется первая функция, которая меняет класс блока с "test1" на "test2".
Далее снова нажимаем на блок и класс меняется с "test2" на "test1".

После этой процедуры все перестает работать.
То есть при повторном нажатии на блок с классом "test1" функция не выполняется.
В чем дело? Ведь я же использую live как положено)
Помогите, направьте, посоветуйте)
:yes: :thanks:

ksa 02.12.2011 07:12

Цитата:

Сообщение от Dorian_bs
Ведь я же использую live как положено

Кем и для чего положено? :D

Какая задача вообще должна выполняться? Просто менять один класс на другой?
Зачем два клика вешается? Да еще с использованием live()...

Dorian_bs 02.12.2011 21:24

Нужно, что бы при нажатии на кнопку, класс все время менялся)

ksa 02.12.2011 21:29

Dorian_bs, так и напиши это в одном обработчике. Зачем их делать два?

devote 02.12.2011 21:52

<style type="text/css">
.test1 {
    color: #f00;
}
.test2 {
    color: #0f0;
}
</style>
<div class="test1">Кнопка</div>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$('.test1').click(function () {
    $(this).hasClass('test1') ? $(this).removeClass('test1').addClass('test2') : $(this).removeClass('test2').addClass('test1');
});
</script>

Dorian_bs 02.12.2011 22:13

Спасибо!)

Pavel M. 03.12.2011 17:05

можно короче
<style type="text/css">
.test1 {
    color: #f00;
}
.test2 {
    color: #0f0;
}
</style>
<div class="test1">Кнопка</div>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$('.test1').click(function () {
    $(this).toggleClass('test1 test2');
});
</script>

Dorian_bs 04.12.2011 00:29

Pavel M.,
спасибо!)


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