JQuery / Mootools offset возвращает null
Я использую библиотеки jQuery и mootools, и у меня есть эта ошибка
TypeError: offset is null
[Parar en este error]
if (jQuery(window).scrollTop() > offset.top) {
Это код:
<link rel="stylesheet" type="text/css" href="default.css" media="screen"/>
<link rel="stylesheet" type="text/css" href="wp-styles.css" media="screen"/>
<link rel="stylesheet" href="css/ui.css" type="text/css" />
<link rel="stylesheet" href="css/horizontal.css" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script type="text/javascript">
jQuery.noConflict();
(function(jQuery){
var offset = jQuery("#bichito").offset();
var topPadding = 200;
jQuery(window).scroll(function() {
if (jQuery(window).scrollTop() > offset.top) {
jQuery("#bichito").stop().animate({
marginTop: jQuery(window).scrollTop() - offset.top + topPadding
});
} else {
jQuery("#bichito").stop().animate({
marginTop: 0
});
};
});
})(jQuery);
</script>
<script src="SpryAssets/SpryCollapsiblePanel.js" type="text/javascript"></script>
<script src="Scripts/swfobject_modified.js" type="text/javascript"></script>
<script type="text/javascript" src="Scripts/ajax.js"></script>
<script type="text/javascript" src="Scripts/mootools-1.2-core.js"></script>
<script type="text/javascript" src="Scripts/mootools-1.2-more.js"></script>
<!--[if IE]>
<script type="text/javascript" src="scripts/excanvas-compressed.js"></script>
<![endif]-->
<!--[if lt IE 7]>
<script defer type="text/javascript" src="Scripts/pngfix.js"></script>
<![endif]-->
<script type="text/javascript" src="Scripts/mocha.js" charset="utf-8"></script>
<script type="text/javascript" src="Scripts/slideitmoo-1.1.js"></script>
<script type="text/javascript">
window.addEvent('domready', function(){
$$('.comprar').each(function(btnCompra) {
btnCompra.addEvent('click',function(event){
. . . есть еще функции mootols. Если я использую только код jquery, он работает, то же самое с функциями mootools, но оба нет. Заранее спасибо.
1 ответ:
JQuery
offset()
метод возвращаетundefined
, если он вызывается на пустой коллекции. Похоже, что вы запускаете свой код jQuery до загрузки DOM, и ваш элементjQuery("#bichito")
в этот момент не существует.Вы можете исправить свой код следующим образом:
jQuery.noConflict(); (function(jQuery){ // <-- do you really need closure here? jQuery(function(){ // <-- wait DOM ready var offset = jQuery("#bichito").offset(); var topPadding = 200; jQuery(window).scroll(function() { if (jQuery(window).scrollTop() > offset.top) { jQuery("#bichito").stop().animate({ marginTop: jQuery(window).scrollTop() - offset.top + topPadding }); } else { jQuery("#bichito").stop().animate({ marginTop: 0 }); }; }); }); })(jQuery);