【问题标题】:Getting DOM events back after stored in Session Javascript在 Session Javascript 中存储后获取 DOM 事件
【发布时间】:2015-06-30 17:27:18
【问题描述】:
function setItemStates() {
    savedItemState = $('#my-items').clone(true, true);
    sessionStorage.setItem('savedItemState', savedItemState.html());
}
function getItemStates() {
    var domElem = sessionStorage.getItem('savedItemState');
    domElem = $(domElem);
    $('body').html(domElem) // No events or state
}

我正在寻找一种方法来在我克隆并保存到 sessionStorage 后恢复我的 DOM 事件。

【问题讨论】:

  • 我猜这是不可能的,因为您将 HTML 保存为字符串,并且它没有事件或数据的概念。
  • 我在想可能有一种方法可以存储事件并将它们应用到 html 之后?仍在寻找
  • 你得到了innerHTML,所以你并没有真正重新创建#my-items,那个元素丢失了?
  • 不,尝试了一些测试,对象被转换为字符串,所以没有办法将事件和数据保存在存储中,唯一的选择是委托事件处理程序,但这对跨会话存储不是很有帮助的元素。如果您真的不需要跨页面加载存储元素,则应将元素存储在变量中并改用detach
  • 为什么不能使用jquery .on()?

标签: javascript jquery session clone


【解决方案1】:

我猜您将不得不使用委托事件处理程序,而不是直接在您的元素上绑定事件。

例如:

$(document).on("click", "#my-items", function(e) {
...
});

代替:

$("#my-items").on("click", function(e) {
...
});

【讨论】:

    猜你喜欢
    • 2018-04-03
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2019-10-15
    • 1970-01-01
    相关资源
    最近更新 更多