我在我正在处理的网站上添加了一个名为scrollpaper的插件。该插件用于两个静态页面,并在我附加到网站的html片段上。
问题是,当删除调用该函数的附加代码段时,使用:
$(this).remove();
我收到与scrollpaper插件相关的以下错误:
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>
您可以在以下网址找到包含错误的网站:http://foleys.be/new-site/index.php
如何重新创建问题:
为了解决这个问题,我到目前为止只尝试将基本插件文件添加到附加元素(并忽略静态页面),我还尝试使用.html('')
和.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');
})
});
答案 0 :(得分:1)
您正在使用.remove
从DOM中删除该元素,但这将清除所有.data
项,包括存储在"scrollPaper"
项中的对象。 scrollpaper插件正在访问从.data("scrollPaper")
检索到的对象的属性,因此当它开始返回undefined
时,它会抛出异常。
您需要.detach
代替scripts.js
:
$(this).detach(); //Removes Element From DOM