Jquery 如何在coffeescript函数中仅定义一次点击事件?
我使用的是Rails 5。我想定义一个点击事件,但当有人点击我的元素时,我很难让点击触发一次。我有Jquery 如何在coffeescript函数中仅定义一次点击事件?,jquery,onclick,coffeescript,ruby-on-rails-5,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
$(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
我只看到“已定义的单击”触发一次,但当我只在一个数据单元上单击一次时,我会看到第二个警报(“警报(新url)”)出现十次。如何使函数在某人单击数据单元格时只触发一次?加载页面时,第一个警报将触发,因此只会触发一次 页面上可能有多个元素的数据顺序属性不等于“”。在控制台中运行
$('[data-order]').length
确定选择器返回的节点数
您的函数正在为所有这些节点设置eventListener,但由于您使用了
this