2013-01-12 44 views
0

我建立了這個彈出式接觸面板。它運行良好,直到我把它放到我的WordPress的網站,然後它拒絕工作。下面是它應該做的事:jQuery Flyout面板不會關閉

http://jsfiddle.net/XwTpE/1/

我發現,如果我把jQuery(document).ready一開始,它開始工作,但現在它不會關閉!當你點擊關閉按鈕時,它會重新打開。事實上,我注意到,只要你點擊頁面,任何地方都會導致它重新打開。觀看演示在這裏:

http://jsfiddle.net/q9b7M/1/

希望這是簡單的解決!任何幫助表示讚賞。謝謝!

+0

這不是你如何使用DOM就緒處理程序。您將點擊處理程序綁定到「文檔」。 –

回答

0

您需要:

jQuery(document).ready(function() { 
    jQuery('#contactFlyout').click(function() 
{ 
    jQuery(".togglepanel:visible").hide(); 
    jQuery("#contact_panel").animate({width:'toggle',height:'toggle'},200); 
}); 

// the close button 
$('.closeDiv').click(function() 
{ 
    jQuery(".togglepanel:visible").animate({width:'toggle',height:'toggle'},200); 

}); 
}); 

參見:http://jsfiddle.net/DcRHh/2/

或者你可以使用速記由法布里西奧指出。儘管我會堅持使用jQuery over $內部的Wordpress,除非你知道你在做什麼,以避免與其他腳本的衝突。

+0

你們真棒!這兩種方式都可以很好地工作,但是我僅僅因爲他沒有答案而將支票交給了Liam :)感謝你們並感謝Fabricio的鏈接,以瞭解如何正確使用DOM Ready處理程序。 – danzo

+0

通過在3分鐘內給予支票,您也可以代表提出答覆。只是在說'。沒問題。 ':P' –

+0

沒問題@danzo - 隨時 –

0

這不是你如何使用DOM Ready handler

jQuery(function ($) { //shorthand for DOM Ready, put your code inside of it 
    $('#contactFlyout').click(function() { 
    $(".togglepanel:visible").hide(); 
    $("#contact_panel").animate({ 
     width: 'toggle', 
     height: 'toggle' 
    }, 200); 
    }); 
    $('.closeDiv').click(function() { 
    $(".togglepanel:visible").animate({ 
     width: 'toggle', 
     height: 'toggle' 
    }, 200); 
    }); 
}); 

Fiddle

特殊jQuery(function($){})語法是WP非常有用,因爲它別名jQuery的回$的DOM準備處理範圍內。如果您不想一次又一次地輸入jQuery,這非常有用。

+0

你是對的,我總是在Wordpress中使用jQuery(function($){}),但是我在過去遇到了問題,所以對於那些不知道衝突等問題的人,我建議使用jQuery 。或者有時如果該方法失敗我使用var $ j = jQuery.noConflict();然後使用$ j引用jQuery,它也非常強大。 –

+0

@LiamBailey是的,它將成爲未來用戶的有用數據。但是,假設您使用的插件(如果有的話)使用'(function($){})(jQuery)'正確寫入,那麼DOM準備好的'jQuery(function($){})'語法不應該有jQuery作爲'$'參數傳遞給處理程序範圍內的任何問題。只要你的所有代碼都在裏面,你就可以安全地使用'$'在那裏引用jQuery。 –

+0

另外,jQuery是由WP自動進入'noConflict'嗎? 'var $ j = jQuery;'也應該足夠了。 '=]' –