我添加了两个点击事件监听器:
$(openGalleryDiv).click()
将显示带有幻灯片动画的overflow: hidden
div $(closeGalleryDiv).click()
将隐藏(overflow:auto
)已打开的div 现在的问题是,如果我将事件监听器直接设置到index.php
页面,一切正常,但如果我将它们设置为main.js
文件中的函数(如下所示),则调用函数{在openCloseGallery.desktopEvents()
内部,虽然没有点击div,但是在加载页面时会触发这两个事件。
有人能解释我为什么吗?
的index.php
index.php
main.js
$(document).ready(function() {
openCloseGallery.desktopEvents();
});
答案 0 :(得分:1)
您在事件侦听器中调用该函数。尝试
var desktopEvents = function () {
$(openGalleryDiv).click(function(){ openCloseAnimation(true) });
$(closeGalleryDiv).click(function(){ openCloseAnimation(false) });
});
在您当前的代码中,它会传递函数openCloseAnimation(true/false)
的返回值,而不是返回函数本身。
答案 1 :(得分:1)
您在作为回调传递时直接调用该方法。您应该将回调传递给click方法,如下所示
// This is directly calling openCloseAnimation method
$(openGalleryDiv).click(openCloseAnimation(true));
// It should be inside callback
$(openGalleryDiv).click(function(){ openCloseAnimation(true) });