【问题标题】:How do I define an on-click event only once in my coffeescript function?如何在我的咖啡脚本函数中只定义一次点击事件?
【发布时间】:2017-02-22 01:54:53
【问题描述】:

我正在使用 Rails 5。我想定义一个点击事件,但是当有人点击我的元素时,我无法让点击只触发一次。我有

$(document).ready (data) ->
  # Set up order-by click behavior if there are such elements
  alert("defined click") 
  $('[data-order!=""]').click ->
    # Reload the page with an order by clause
    data_val = $(this).data("order") 
    query_data_val = $.url().param('order_by') 
    if query_data_val? && query_data_val.indexOf(data_val) > -1 && query_data_val.indexOf("asc") == -1
      data_val = data_val + " desc"
    new_url = window.location.href.replace( /[\?#].*|$/, "?order_by=" + data_val )   
    alert( new_url )  
    window.location.href = new_url 

我只看到“定义的点击”触发一次,但是当我在一个数据单元格上点击一次时,我看到第二个警报(“alert(new_url)”)出现十次。当有人点击数据单元格时,如何使函数只触发一次?

【问题讨论】:

    标签: jquery onclick coffeescript ruby-on-rails-5


    【解决方案1】:

    第一个警报会在页面加载时触发,因此只会发生一次。

    页面上可能有多个元素的数据顺序属性不等于“”。在控制台运行

    $('[data-order]').length 
    

    确定您的选择器返回的节点数。

    您的函数正在为所有这些节点设置一个 eventListener,但只会对被点击的那个节点起作用,因为您使用了

    this
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 2014-02-15
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 2016-06-20
      • 2012-09-03
      相关资源
      最近更新 更多