gpt4 book ai didi

javascript - jQuery 在 Rails 中执行 if-else 语句的两个分支

转载 作者:搜寻专家 更新时间:2023-11-01 04:47:16 26 4
gpt4 key购买 nike

我在 Rails 页面上有以下 jQuery:

$(document).on('click','.reportsArrow', function() {
if ( $(this).parent().hasClass('reportCollapsed') ) {
console.log("A");
$(this).parent().removeClass('reportCollapsed');
}else{
$(this).parent().addClass('reportCollapsed');
console.log("B");
}
});

当我点击带有 reportsArrow 而没有 reportCollapsed 的元素时,日志显示

B

A

意味着它正在执行 else 部分,然后执行 if 部分。我希望函数每次点击只执行一次,并且只遵循一个代码路径。为什么它被执行两次,我该如何停止?我应该指出,这在网页设计师创建的模型中正确切换(仅限 HTML/CSS/JS)。看起来问题与 Rails 相关。

编辑:

我们找到了一个可行的解决方案:

$('.reportsArrow').click(function() {
$(this).parent().toggleClass('reportCollapsed');
});

最佳答案

该事件将被多次触发并在 DOM 树中向上传播。使用 event.stopPropagation() .您还可以使用 toggleClass而不是分支。

$(document).on('click','.commonClass', function(event) {
event.stopPropagation();
$(this).parent().toggleClass('newClass');
});

关于javascript - jQuery 在 Rails 中执行 if-else 语句的两个分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24298890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com