我在我正在开发的网站上添加了一个名为 scrollpaper 的插件。该插件用于静态页面和我附加到网站的 html 片段。
问题是,当调用函数的附加片段被删除时,使用:
$(this).remove();
我收到以下与滚动纸插件有关的错误:
TypeError: 'undefined' is not an object (evaluating 'data.clearer')
错误发生在片段被删除的那一刻。它不会导致任何实际的性能问题,当我重新附加代码片段时,插件仍然可以成功调用和执行,但是错误确实会堆积起来,我非常想修复它们。
主插件文件包含在每个页面的底部,并在其下方添加了对静态页面的调用:
<script src="js/jquery.scrollbarpaper.js"></script>
<script type="text/javascript">
$(function() {
$('.scrollpaper-trigger').scrollbarPaper();
});
</script>
第二个调用被添加到附加的 html 中:
<script>
$(function() {
$('.scrollpaper-trigger-lightbox').scrollbarPaper();
});
</script>
如何重现问题:
- 打开网络检查器/触发错误
- 启动完整、派对、套餐或在线预订表格
- 通过单击覆盖/关闭按钮关闭打开的元素,或在菜单页面底部的菜单之间切换。
- 这将触发错误
为了自己解决问题,到目前为止,我只尝试将基本插件文件添加到附加元素(并忽略静态页面),我也尝试过使用.html('')
and .empty('')
。代替.remove()
,但这没有帮助。
我只使用 JQuery 几个月,所以虽然我已经熟悉它的工作原理,但我很想学习最佳实践。但是,目前这个问题超出了我的范围,因此我们将不胜感激任何和所有的帮助。
菜单翻转脚本:
$('.other-menus a').click(function() {
var url = $(this).attr('data-url');
$('.switch').fadeOut(500,
function() {
$(this).detach();
$('<div></div>').load(url).fadeIn(800).appendTo('.switch-wrap');
})
});