Кнопка JQuery даже не выдает

0

Я новичок в jQuery, поэтому я медленно все понимаю. На самом деле это застряло.

Цель. Я хочу создать событие, в котором я нажимаю кнопку, и перемещает элемент вправо. Затем я снова нажимаю на него, и он перемещает этот элемент назад влево.

Проблема: он работает в первый раз, но если вы снова нажмете его, он снова вернется вправо.

Добавлено мои стили, которые я вызывал

$(document).ready(function () {
    var img = ".img";
    var slideBody = "#bodyWrapper";
    $(img).click(function () {
        if ($(slideBody).css("left", "0") <= "true") {
            $(slideBody).animate({
                left: "200px"
            }, 200);
        } else {
            $(slideBody).animate({
                left: "0px"
            }, 200);
        }
    });
});

.img {
display: block;
position: relative;
width: 50px;
height: 50px;
background: yellow; 
opacity: 1;
left: 0px;
}
#bodyWrapper {
    display: block;
    width: 100%;
    overflow: hidden;
    left: 0px;
    position: relative;
}    
  • 1
    <= true Что-то является либо истиной, либо ложью. Между ними нет ничего.
Теги:

2 ответа

2
Лучший ответ

измените условие следующим образом:

    if ( $(slideBody).css("left") == 0 ){
        $( slideBody ).animate({left:"200px"}, 200);
    } else { 
        $( slideBody ).animate({ left:"0px" }, 200);
    }
  • 0
    пожалуйста, не забудьте пометить этот ответ как принятый, так как если ваша проблема решена :)
  • 0
    Я добавил его и зарегистрировал как ложное. Я добавил стили, которые я использую выше. Может быть, это вызывает проблему?
Показать ещё 1 комментарий
1

Будет лучше добавить класс к элементу, который перемещается влево и/или вправо.

$( document ).ready(function() {
var img = ".img";
var slideBody = "#bodyWrapper"; 


$( img ).click(function() {

    if ( $(slideBody).is(".atLeft")){
            $( slideBody ).animate({left:"200px"}, 200);
            $( slideBody ).removeClass('atLeft');
    } else { 
            $( slideBody ).animate({ left:"0px" }, 200);
            $( slideBody ).addClass('atLeft');
    }

});

});
  • 0
    Почему «лучше» добавить класс в этом случае?
  • 0
    Это определенно работает, но я пытался избежать добавления в класс еще одного класса. Хорошее предложение, хотя!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню