从单独的文件中调用事件侦听器

时间:2017-05-03 15:57:02

标签: javascript jquery

我添加了两个点击事件监听器:

  • $(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();
});

2 个答案:

答案 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) });