2013-02-28 80 views
0

我正在使用Flip!插件在點擊時翻轉div並在用戶再次單擊div時恢復翻轉。下面的代碼會使DIV翻轉,但是當您再次單擊它時不會將其翻轉。翻轉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(「click」)'。 – 2013-02-28 21:44:08

+1

好吧,如果每次動畫結束時,只需將另一個偵聽器添加到'#flipbox',我確信您最終會在同一個項目中擁有多個偵聽器,並且它們會發生衝突。 – Leeish 2013-02-28 21:44:14

回答

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/) – 2013-02-28 22:02:38

+0

嗯,它已經爲你工作了。當我在「onEnd」中實現revertFlip時,它不起作用。也許在執行revertFlip的數據之前觸發「onEnd」?無論如何,謝謝你指出。我更新了這篇文章,指出你有更好的實現 – 2013-02-28 22:04:21

+0

如果DIV的一邊是大圖像,另一邊是帶有鏈接的文字,我將如何修改此代碼?內容是否可以:包含圖片的路徑? – 2013-02-28 23:03:05