如何在我的coffeescript函数中仅定义一次点击事件?

时间:2017-02-21 17:23:05

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

我正在使用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)”)出现了十次。当someoen点击数据单元时,如何才使该功能触发一次?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

您的功能是为所有这些节点设置eventListener,但由于您使用了

,因此只会对被点击的节点执行操作
this