【发布时间】:2019-06-06 18:11:27
【问题描述】:
我有以下标记(注意它是通过 php eval 函数呈现的):
<div class="my-gallery">
...
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$.getScript("//cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/jquery.magnific-popup.min.js")
.done(function() {
$('.my-gallery').magnificPopup({
type: 'image',
gallery: {
enabled: true
}
});
})
.fail(function() {
console.log('fail');
});
</script>
但是我收到以下错误:
Uncaught TypeError: $(...).magnificPopup is not a function
* 更新 *
当更改代码以使其工作时:
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/jquery.magnific-popup.min.js"></script>
<script>
$('.my-gallery').magnificPopup({
type: 'image',
gallery: {
enabled: true
}
});
</script>
这很奇怪。为什么使用$.getScript() 方法时不起作用。
在网络选项卡中,它看起来像是拨打了两次电话,请参阅图片:
【问题讨论】:
-
我无法复制它:jsfiddle.net/barmar/bc4f6k9h/1。您是否有机会加载多个 jQuery 副本?这通常会导致这样的错误。
-
@Barmar 只有一份 jQuery。这很奇怪,发生了一些非常奇怪的行为。
-
typeof $(".my-gallery").magnificPopup打印什么? -
@Barmar 抱歉,我不明白你的意思?
-
在 JavaScript 控制台中输入。错误表明它不是一个函数,看看它是否是其他类型的值会很有帮助。
标签: jquery magnific-popup