2011-09-12 109 views
0

我正在使用此功能在頁面向下滾動時在屏幕上保留div。這工作很好,但它似乎打破了一些其他的jQuery代碼(在wordpress中)。問題在於以下功能。如果我刪除它,其他代碼工作正常。有人建議可以什麼可以問題下面的代碼:jQuery代碼打破其他代碼

jQuery(document).ready(function($){ 
    jQuery.event.add(window, "scroll", showbar); 
    var sharebar = jQuery('#showbar'); 
    var start = jQuery(sharebar).offset().top; 
     function showbar() { 
      var p = jQuery(window).scrollTop(); 
      jQuery(sharebar).css('position',((p+10)>start) ? 'fixed' : 'absolute'); 
      jQuery(sharebar).css('top',((p+10)>start) ? '10px' : ''); 
     } 
}); 

編輯:我通過「破譯密碼」的意思是,如果我包括我的wordpress主題一個JavaScript有這個代碼。 wordpress的javascript在主題的控制面板中不起作用(例如,沒有通過點擊圖片上傳按鈕等彈出的Lightbox)。一旦我刪除這段代碼,wordpress控件就會開始工作。所以很顯然,這個代碼有些問題。

編輯2:

我似乎沒有得到任何的js錯誤,但我注意到,如果我在(function() { .. })();代替jQuery(document).ready(function($){包裹代碼,然後WordPress的沒有任何問題,但後來我的代碼不能正常工作。你能建議我如何使用function()而不是jQuery(document).ready ..對不起,但我沒有太多的jQuery知識。

+2

有什麼其他的代碼? –

+3

很難說不知道'其他代碼'是什麼或'破'是什麼。 – mrtsherman

+0

它如何「打破」?你得到什麼錯誤?您是否嘗試過調試(FireBug/Chrome JS Debugger /等)? –

回答

0

作爲對您的第二次編輯的迴應,請嘗試將(function() { ... })()閉包放在文件的最底部,正好在閉合的</body>標籤上方。這樣,所有相關的DOM元素將已經存在。

+0

謝謝!它工作完美。只是想知道是否有任何替代方法(而不是在頁面加載,加載標題)。 – mari

+0

可能有;很難說沒有看到你的其他JavaScript是衝突的。但是將JS放在文件底部是一種非常標準的開發實踐,有時甚至是首選。閱讀http://developer.yahoo.com/blogs/ydn/posts/2007/07/high_performanc_5/瞭解更多細節。 – thismax

0

您的創建scroll事件的方式非常不規範。相反的:

jQuery.event.add(window, "scroll", showbar); 

你爲什麼不嘗試:

jQuery(window).bind('scroll', showbar); 

有可能解決您的問題的機會。

1

擺脫一段代碼,並添加下面的CSS規則:

#showbar { 
    position: fixed; 
} 

這是一個通用的方法來保持一個元素在相同的位置,當用戶滾動時也是如此。 CSS方法比JavaScript實現需要更少的計算能力。

如果你仍然想使用jQuery,看看這個頁面:http://wpapi.com/wordpress-and-jquery-conflicts-how-to-solve-that/