【问题标题】:Rails 5 and Coffeescript: On Click Event Not triggeringRails 5 和 Coffeescript:点击事件未触发
【发布时间】:2016-12-16 01:21:38
【问题描述】:

在我的网页上,我有一个动态附加到我的页面的 div 元素。

在那个 div 中,我有一个链接,单击该链接时,它会使用 ajax 从我的服务器中提取数据。

<div class="main-div">
  <a href="#" class="pull-data"><b>Click Here</b></a>
</div>

如果我在页面上的 jQuery 中有一个点击事件,它可以正常工作:

$("a.pull-data").on("click", function(e) {
    console.log("Clicked!");
}

但是,当我尝试将其转换为咖啡脚本时,就像这样,什么都不会触发:

jQuery ->
  $("a.pull-data").on "click", ->
    console.log "Clicked?"

我的咖啡脚本中是否缺少某些内容?如何修复我的咖啡脚本以使其捕获对动态添加元素的点击?

【问题讨论】:

    标签: jquery ruby-on-rails coffeescript


    【解决方案1】:

    您的两个代码示例不等价:

    $("a.pull-data") // create a jquery object matching the CSS selector
      .on("click", function(e) { // add a click handler that
        console.log("Clicked!"); // logs "Clicked!" to the console
      });
    

    这是您的咖啡脚本的转译版本:

    jQuery(function() { // pass anon fn to jQuery constructor
      return $("a.pull-data").on("click", function() { // returning a fn that
        return console.log("Clicked?"); // attaches the click handler
      });
    });
    

    它创建了一个匿名函数,它可以做你想做的所有事情,然后将它传递给 jQuery 构造函数,这意味着它什么都不做,因为它从未真正被调用过。

    总是,总是,总是在出现问题时查看您的输出 JavaScript。您甚至可以使用coffeescript.org 的交互式编译器来构建函数,同时关注输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-28
      相关资源
      最近更新 更多