【问题标题】:Trigger a JS custom event from a separate file从单独的文件触发 JS 自定义事件
【发布时间】:2019-07-17 10:25:19
【问题描述】:

我有一个 JS 文件来管理我的 popins。每次打开或关闭 popin 时,我都会触发这样的自定义事件。

文件编号 1

$(document).trigger('popinOpen', {popin: $(popinId)});

现在,如果我想在触发触发器时做某事,我可以执行以下操作。

文件 n°2

$(document).on('popinOpen', function(e, popin) {
  console.log(e);
  console.log(popin);
});

此代码在同一个文件中有效,但在单独的文件中无效,我不明白为什么。我试过在第一个文件之前或之后移动第二个文件,但它没有改变任何东西。

我错过了什么吗?

【问题讨论】:

    标签: javascript jquery triggers jquery-events


    【解决方案1】:

    我认为,您在开始聆听之前就触发了动作。 当您将代码分成 2 个不同的文件时,您必须确保首先注册您的侦听器。

    首先在 index.html 中包含您的侦听器,然后是触发操作。

    【讨论】:

    • 你是对的!我已经用简单的 index.html 和 2 个 Javascript 文件进行了测试,你必须在触发它之前听一下这个动作。在我的项目中,这就是我所拥有的,但它仍然不起作用。如果我从浏览器控制台手动触发它,它可以工作。它必须特定于我的项目。
    • 我使用捆绑的 JS 文件与 Webpack 管理我的触发器,而监听它的文件不是。看起来更像是范围问题。
    • 我接受了你的回答,尽管我的问题不仅仅是文件顺序问题,它有助于我理解“错误”在哪里。就作用域变量而言,看起来 Webpack 和 jQuery 并不是很好的朋友。我必须使用普通的 Javascript 解决方案来触发和监听我的自定义事件以使其工作,因为(显然)Webpack 使用的 jQuery 实例与我的第二个文件中的实例不同。更多信息在这里:stackoverflow.com/a/46404476/7160865
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多