如果javascript代码段未使用,它将阻止其他javascript工作
If javascript snippet is unused it blocks other javascript from working
我使用以下代码在卷轴上有一个固定的标题。在使用它的页面上,其他javascript可以正常工作,但在页面上,我没有类"top",也没有使用固定的头,它破坏了其他javascript。我该如何防止这种情况发生?我应该先检查一下页面上是否存在该类吗?
var fixmeTop = $('ul.top').offset().top;
$(window).scroll(function() {
// do something
});
您收到一个错误,该错误阻止其他javascript运行,因为如果ul.top不存在,那么您的第一行$('ul.top').offset().top;正在引发一个错误,导致页面上的其余脚本无法运行。
将代码封装在if
块中,该块在尝试执行之前检查元素是否存在:
if ($('ul.top').length) {
var fixmeTop = $('ul.top').offset().top;
$(window).scroll(function() {
var currentScroll = $(window).scrollTop();
if (currentScroll >= fixmeTop) {
$( "ul.top" ).addClass( "top" );
$('ul.top').css({
position: 'fixed',
top: '0',
left: 'auto'
});
} else {
$( "ul.top" ).removeClass( "top" );
$('ul.top').css({
position: 'relative',
top: '0'
});
}
});
}
如果你使用浏览器控制台工具,你会看到这一点:如何使用浏览器控制台
在代码中对类进行检查。例如
if ($('.top').length) {
你的答案在你最初的两行,上面写着
var fixmeTop = $('ul.top').offset().top;
$(window).scroll(function() {
--code
}
在你的第一行中,你有$('ul.top'),它会给你一个未定义的值,然后你正在使用.offset——我认为它应该给你未定义的,但它不是一个函数。
理想情况下,您应该检查该类是否存在,然后只做一些事情。如果没有,不要执行整个块,因为你的windows滚动方法使用fixmeto,当这个类本身不存在时,fixmeto就不存在了
希望这能有所帮助。
快乐学习
相关文章:
- 在表单提交将DOM的一部分替换为分部之后,我应该将ajax成功绑定到什么来使我的javascript工作
- 我可以'不要让Javascript工作不正常
- 如何让我的html5功能不兼容警告使用javascript工作
- Excel Web Services 电子邮件 JavaScript 工作表
- 用于Google Fusion Table层的Javascript工作,但试图整理代码
- Bootstrap:如何附加一个类,并且仍然有BS Javascript工作
- JavaScript 工作队列
- JavaScript工作,直到我添加这个&&陈述
- 为什么不'在CasperJS中没有简单的JavaScript工作
- 如何"递归AJAX回调”;在JavaScript工作中
- 基本验证javascript工作不正常
- 需要帮助让这个字符串的Javascript工作
- HTML和JavaScript工作不正常
- 下拉菜单无法从CSS或Javascript工作
- 需要从erb生成一个非常特定的html来让javascript工作
- 如果javascript代码段未使用,它将阻止其他javascript工作
- 将内联事件处理程序移动到chrome扩展的javascript工作表
- 阻止其他Javascript工作的Javascript
- iframe阻止javascript工作
- 无法获取切换函数(JavaScript工作)