2011-09-12 65 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/