我正在标题中的 application.js 中为整个站点(rails 应用程序)构建我的函数,如下所示:
function scrollOnClick() {
var topPosition = $('#comm_meta').offset().top;
$('#comm_see_more a').click(function(event){
$('html, body').animate({scrollTop:topPosition}, 'slow');
event.preventDefault();
});
}
function somethingElse() {
// another functionality
}
$(document).ready(function() {
scrollOnClick();
somethingElse();
});
某些功能在每个页面上都使用,而其他功能仅在某些页面上使用。某些函数会出现如下错误,因为它们找不到匹配的元素:
TypeError: $(...).offset(...) is undefined
显然,所有功能都在所有页面上运行,但这真的有问题吗?找不到匹配的元素时如何避免错误?
更新
@Arun P Johny 的回答给了我灵感,让我.top
从最初的 jQuery 对象创建中删除调用并将其添加到.click
方法中:
$('html, body').animate({scrollTop:topPosition.top}, 'slow');
这行得通!没有更多的错误。问题是为什么?这里有适用的规则吗?