如何在我的 coffeescript 函数中只定义一次点击事件?
How do I define an on-click event only once in my coffeescript function?
我正在使用 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
我只看到 "defined click" 触发一次,但是当我只在其中一个数据单元格上单击一次时,我看到第二个警报 ("alert( new_url )") 出现了十次。如何使函数仅在有人单击数据单元格时触发一次?
第一个警报在页面加载时触发,因此只发生一次。
页面上可能有多个元素的数据顺序属性不等于“”。在控制台中 运行
$('[data-order]').length
确定您的选择器返回了多少个节点。
你的函数正在为所有这些节点设置一个 eventListener,但只会对被点击的节点起作用,因为你使用了
this
我正在使用 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
我只看到 "defined click" 触发一次,但是当我只在其中一个数据单元格上单击一次时,我看到第二个警报 ("alert( new_url )") 出现了十次。如何使函数仅在有人单击数据单元格时触发一次?
第一个警报在页面加载时触发,因此只发生一次。
页面上可能有多个元素的数据顺序属性不等于“”。在控制台中 运行
$('[data-order]').length
确定您的选择器返回了多少个节点。
你的函数正在为所有这些节点设置一个 eventListener,但只会对被点击的节点起作用,因为你使用了
this