2013-02-28 2 views
0

Я использую плагин Flip!, чтобы перевернуть div на клик и вернуть флип, когда пользователь снова нажимает на div. Следующий код делает DIV flip, но не отбрасывает его назад, когда вы снова нажимаете его.Flip a DIV onclick

JavaScript

$(function(){ 
$("#flipbox").bind("click",function(){ 
    $("#flipbox").flip({ 
     direction:'rl', 
     content:'this is my new content', 
     onEnd: function(){ 
      $("#flipbox").bind("click",function(){ 
       $("#flipbox").revertFlip(); 
      }); 
     } 
    }) 
    return false; 
}); 

});

HTML

<div id="flipbox"> 
    Hello! I'm a flip-box! :) 
</div> 

Цените любую помощь.

+1

Перед добавлением нового необходимо отвязать существующий обработчик кликов. Добавьте 'unbind (« щелкните »)' в цепочку методов перед добавлением возвращаемого обработчика кликов. –

+1

Ну, если вы просто добавляете еще один прослушиватель в '# flipbox' каждый раз, когда анимация заканчивается, я уверен, что вы закончите с несколькими слушателями на одном и том же элементе, и они будут конфликтовать. – Leeish

ответ

1

Поставив состояние флипбокса на элемент, я использовал оператор if, чтобы проверить это состояние и определить, как перевернуть окно.
JSFiddle: http://jsfiddle.net/HP7mu/
Javascript:

$(function(){ 
$("#flipbox").bind("click",function(){ 
    if($(this).data('flipped')!="yes"){ 
    $("#flipbox").flip({ 
     direction:'rl', 
     content:'this is my new content', 
     onEnd: function(){ 
       $("#flipbox").data('flipped','yes'); 
     } 
    }); 
    }else{ 
     $("#flipbox").flip({ 
     direction:'rl', 
     content:'Hello! I\'m a flip-box! :)', 
     onEnd: function(){ 
       $("#flipbox").data('flipped','no'); 
     } 
    }); 
    } 
    return false; 
}); 
}); 

Html: То же
Примечания: Как показано в комментариях ниже Асад имеет еще лучшее решение для этого, просто используя revertFlip для возврата если в коде запускается else.

+1

Я не уверен, что понимаю примечание. Вызов 'revertFlip' работает отлично, как показано в [этой скрипке] (http://jsfiddle.net/A2sva/) –

+0

Хм, это сработало для вас. Когда я реализовал revertFlip в «onEnd», это не сработало. Возможно, «onEnd» запускается до того, как данные для revertFlip реализованы? Во всяком случае, спасибо, что указали это. Я обновил сообщение, чтобы указать, что у вас есть лучшая реализация. –

+0

Как изменить этот код, если одна сторона DIV - это большое изображение, а другой текст со ссылками? Может ли контент содержать путь к изображению? –