javascript - Rails jquery 上多次调用 click 事件

标签 javascript jquery ruby-on-rails

我尝试使用 JavaScript 在单击另一个元素时切换一个元素的可见性。

这是我到目前为止的 JavaScript:

$(document).on('click', '.ticket_title', function(event){  
    console.log("click!")
    $("#ticket_sub_"+$(this).attr("data-id")).slideToggle();
});

但是它无法正常工作,因为点击事件被多次触发。

这是我到目前为止的 html:

<div id="ticket_56" class="ticket_box">
    <div class="ticket_title" data-id="56"></div>
</div>
<div id="ticket_sub_56" style="display:none;" class="ticket_sub">
</div>

最佳答案

抱歉,此错误是由 Turbolink 引起的。

turbolinks在页面移动时调用js。 所以js多次绑定(bind)一个文档。

所以我解决这个问题是在绑定(bind)文档之前取消绑定(bind)文档。

$(document).off("click", ".ticket_title");
$(document).on('click', '.ticket_title', function(event){
    $("#ticket_sub_"+$(this).attr("data-id")).slideToggle();
});

感谢您的帮助!

关于javascript - Rails jquery 上多次调用 click 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30453342/

相关文章:

ruby-on-rails - Rails 默认只大写第一个单词的第一个字母,而不是我输入的字符串

ruby-on-rails - HaverstHQ Chosen Picker 缺少向下箭头

javascript - X 秒后刷新选择元素

javascript - 如何在 Angular 7 中显示自定义验证错误

javascript - 使用Jquery创建带有转义文本+ HTML的元素

jquery - 切换直接子级的类

jquery - 清除间隔不起作用?

ruby-on-rails - 谷歌地图和 Rails 3

javascript - 某些 Google map 标记未显示在 Internet Explorer 中,但显示在所有其他浏览器中

javascript - 幻灯片更改时更改 Bootstrap 的轮播箭头颜色