gpt4 book ai didi

javascript - 如何使用 Rails 5 + jQuery 保持通过 Turbolinks 提交的页面状态

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:13 24 4
gpt4 key购买 nike

我试图在单击另一个元素时显示/隐藏 部分。非常简单的东西,我让它工作得很好。问题是:这是一个待办事项列表;任务是通过 Ajax(使用 Turbolinks、数据远程等)创建和检查的,当发生这种情况时,显示/隐藏操作将停止工作,直到我再次手动重新加载页面。它也会忘记该部分是否隐藏的状态,即使我使用 localStorage 时也是如此:

$(document).ready(function(){
if (localStorage.getItem("revealed?") === "true") {
$('#completed').removeClass('hide');
} else {
$('#completed').addClass('hide');
}

$('#show_completed').click(function(){
if (localStorage.getItem("revealed?") === "false") {
$('#completed').removeClass('hide');
localStorage.setItem("revealed?", "true");
} else {
$('#completed').addClass('hide');
localStorage.setItem("revealed?", "false");
}
});

});

我已经尝试了所有我能想到的 JS 方面的解决方案,并且在某种程度上一切正常,但是当自动提交任务时它们仍然会中断。

我被难住了。它是 jQuery 和 Turbolinks 之间的某种幕后干扰吗?我错过了什么?

最佳答案

可能有一个解决方案是在 jquery 中使用 on(),您可以通过以下更改来实现,如果不行,让我们尝试另一种方式

$(document).ready(function(){
toggleItem();

$('#show_completed').on('click', function(){
if (localStorage.getItem("revealed?") === "false") {
$('#completed').removeClass('hide');
localStorage.setItem("revealed?", "true");
toggleItem()
} else {
$('#completed').addClass('hide');
localStorage.setItem("revealed?", "false");
toggleItem();
}
});


});

toggleItem = function(){
if (localStorage.getItem("revealed?") && localStorage.getItem("revealed?") === "true") {
$('#completed').removeClass('hide');
} else {
$('#completed').addClass('hide');
}
}

关于javascript - 如何使用 Rails 5 + jQuery 保持通过 Turbolinks 提交的页面状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51576587/

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