javascript - 切换 bool 数据属性仅适用于一次 Jquery

标签 javascript jquery html attr

我正在创建一个待办事项列表,其中每个待办事项的 HTML div 都包含一个 data-completed="true" 属性。

当使用 Jquery 单击待办事项时,我尝试来回切换已完成的属性

它切换到 false,但是当我再次单击时它不会切换回来。尽管点击事件正在传递新值,但 FlipCompleted 变量似乎陷入了 false 状态。

$("body").on("click", ".todo", function() {
    let id = $(this).data("id")
    let completed = $(this).attr("data-completed")
    // dbMethods.updateTodo(id, completed)
    domMethods.updateTodo.call(this, completed)
    event.stopPropagation()
})
updateTodo: function(completed) {
        let flipCompleted = !completed
        $(this).children('.todo-title').toggleClass("completed");
        $(this).data("completed", flipCompleted);
    }

HTML:

<div class="todo" data-id="5de7d31d753b914d6f714cab" data-completed="true">
                <div class="todo-title"><h4>Go to shops</h4></div> 
                <button class="delete"><i class="fas fa-trash-alt" aria-hidden="true"></i></button>
            </div>

我尝试使用 .attr().data() 更改它,两者都只能工作一次。

我不确定我做错了什么,因此我们将不胜感激。

最佳答案

通过修复代码中的不一致问题可能可以解决。你有这个:

$("body").on("click", ".todo", function() {
    ...
    // this bit of code right here:
    let completed = $(this).attr("data-completed")
    ...
})
updateTodo: function(completed) {
        ...
        $(this).data("completed", flipCompleted);
    }

但是您想在这两种情况下使用 jQuery .data 函数

$("body").on("click", ".todo", function() {
    ...
    // this bit of code right here:
    let completed = $(this).data("completed")
    ...
})

关于javascript - 切换 bool 数据属性仅适用于一次 Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59394198/

相关文章:

html - Angular 5 - 组件标签之间的内容

javascript - 点击功能不适用于第二次点击

javascript - 如何在具有缩放功能的 div 中适应和居中 css 家谱

javascript - ViewModel 当前状态到 JSON

jquery - 使用 jQuery.data() 丢失数据

c# - 使用 Asp.net 的国际象棋引擎

javascript - 向 Rails Controller 指示哪个 View 调用了操作

javascript - 我应该如何使 JS 变量等于 MongoDB 字段?

jquery - 页面底部的 div

html - 将 .doc/docx 转换为 Html