作業中のサイトに 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 に 2 番目の呼び出しが追加されます。
<script>
$(function() {
$('.scrollpaper-trigger-lightbox').scrollbarPaper();
});
</script>
問題を再現する方法:
- Web インスペクタを開く/バグを発生させる
- フルメニュー、パーティーメニュー、セットメニュー、またはオンライン予約フォームのいずれかを起動します
- オーバーレイ/閉じるボタンをクリックして開いている要素を閉じるか、メニュー ページの下部にあるメニューを切り替えます。
- これにより、エラーが発生します
自分で問題を解決するために、これまでのところ、追加された要素に基本プラグイン ファイルを追加することだけを試みました (静的ページは無視しました.html('')
) .empty('')
。の代わりですが.remove()
、それは役に立ちませんでした。
私は JQuery を使い始めてまだ 2 か月しか経っていないので、すべての仕組みに慣れつつあり、ベスト プラクティスを学びたいと思っています。ただし、この問題は現時点では私を超えているため、すべての助けをいただければ幸いです。
メニュー反転スクリプト:
$('.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');
})
});