我希望每个页面都有一个脚本文件,其中包含该特定页面可能需要或可能不需要的脚本。在我的主页上我有这个脚本:
$(function () {
var $select = $('#select');
var $window = $(window);
var isFixed = false;
var init = $('#select').offset().top;
$window.scroll(function () {
var currentScrollTop = $window.scrollTop();
if (currentScrollTop > init && isFixed === false) {
isFixed = true;
$select.css({
top: 0,
position: 'fixed'
});
console.log("fixed");
} else if(currentScrollTop <= init && isFixed === true) {
isFixed = false;
$select.css('position', 'relative');
console.log("unfixed");
}
});
$("#scroll").click(function () {
$('html, body').animate({
scrollTop: $(".jumbo").offset().top + $(".jumbo").height()
}, 300);
});
});
但是当它在主页上运行时(没有#select元素)我收到此错误并破坏了我的脚本:
未捕获的TypeError:无法读取属性&#39; top&#39;未定义的
如果在该特定页面上不需要该脚本而不必将其加载到自己的文件中,我怎样才能使它不会导致错误?
我应该在页面加载时调用该函数吗?
答案 0 :(得分:1)
您可以使用length
属性检查元素是否存在:
var init = $select.length ? $select.offset().top : 0;
如果元素不存在,则返回0
,否则返回顶部偏移量。