【问题标题】:jQuery localStorage without refresh the pagejQuery localStorage 不刷新页面
【发布时间】:2015-02-01 16:35:21
【问题描述】:

1.我怎样才能从这个输入中得到一个值

<input type="text"></input>

使用 localStorage 将其附加到 DOM 中,即使页面刷新也会保存。

  1. 我想给它附加一个删除图标选项,所以当我点击它时,它将 localStorage.removeItem();在不刷新页面的情况下从 DOM 获取。

【问题讨论】:

  • 我觉得这里对DOM和localStorage的关系有一点误解。 localStorage 只是一种数据存储机制 - 您不能向 DOM 添加任何内容 with localStorage,更多的是您可以使用 localStorage 在页面之间将其持久化,然后提取值以附加到 DOM。
  • 但是你可以用 jQuery 附加它,我已经这样做了,如果不刷新页面,它对我不起作用,如果你愿意我可以告诉你,但绝对有可能跨度>
  • 我讨厌别人给我错误的答案,我已经问过这个问题 3 次了,看看我的个人资料!!!,这太烦人了,但还是谢谢
  • 我会在几分钟后添加答案 - 看看这次我们能否让您走上正轨。给我一点时间来创建一个 jsfiddle :)。

标签: jquery


【解决方案1】:

刷新:

示例存储本地,抱歉没有时间扩展版本(稍后会做):

var dogname = "Skippy";
localStorage.setItem("dog", dogname);
var dogLocal = localStorage.getItem("dog");
$("#dog").html(dogLocal);

http://jsfiddle.net/Andelhofs/59dsL7s8/1/

【讨论】:

  • 不,它没有附加任何东西,我试图附加你的 dogname 变量,我什么也没看到
【解决方案2】:

我怀疑您正在尝试执行类似于 SO 中的标记功能的操作,即您使用关键术语标记问题,添加它们,然后您可以选择删除它们。那是对的吗?如果是这样,请查看我在 http://jsfiddle.net/u7tkoo6n/ 上写的快速 JS Fiddle。

由于我必须在上面的链接中附上代码,所以这里是:

HTML:

<form>
    <input type="text" id="name" name="name" />
    <input type="submit" value="Add" id="addName" />
</form>
<div class="names-panel"></div>

jQuery:

$(document).ready(function() {
    $("#addName").click(function(e) { // On click of the button
        var val = $("#name").val(); // Get the current value
        if(val) {
            $("#name").val(""); // Blank out the text input
            var names = localStorage.getItem("names");
            if(names) {
                names += "," + val;
            } else {
                names = val;
            }
            localStorage.setItem("names", names);
            updateNames();
        }
        e.preventDefault();
        return false;
    });
    updateNames();
});

function updateNames() {
    var names = localStorage.getItem("names");
    if(names) {
        names = names.split(",");
        $(".names-panel").html("");
        for(var i = 0; i < names.length; i++) {
            var item = $("<span class=\"item\">" + names[i] + "<span class=\"ui-icon ui-icon-close\" data-name=\"" + names[i] + "\"></span></span>");
            item.find(".ui-icon-close").click(function() {
                var currentName = $(this).data("name");
                var names = localStorage.getItem("names");
                names = names.split(",");
                var position = names.indexOf(currentName);
                if(position > -1) names.splice(position, 1);
                names = names.join();
                localStorage.setItem("names", names);
                updateNames();
            });
            $(".names-panel").append(item);
        }
    }
}

CSS(纯粹是为了外观):

* {
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

input[type=text] {
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    border: 1px solid #ccc;
}

.item {
    display: inline-block;
    width: auto;
    border: 1px solid #ccc;
    background-color: #eee;
    padding: 3px 40px 3px 8px;

    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    margin: 5px 5px 5px 0;

    position: relative;
}

.item .ui-icon {
    position: absolute;
    right: 0;
    top: 3px;
}

.item .ui-icon.ui-icon-close {
    cursor: pointer;
}

它可以写得更好(我有一半倾向于将它写成一个 jQuery UI 插件,但认为这可能需要更长的时间)但它的工作都是一样的。

【讨论】:

  • 再次,第五次,我已经有了这段代码......我只是不知道如何用 localStorage 删除项目,所以当我点击某些东西时,假设我们在旁边创建一个删除按钮它会隐藏它的值,这没什么用..我的代码更短,你可以在这里看到:stackoverflow.com/questions/28126265/…
  • 对不起,伙计,这是这段代码所做的事情之一。查看小提琴....
  • 刚刚在jsfiddle.net/ClarkeyBoy1987/u7tkoo6n/2 更新了小提琴,因为我注意到有一个小问题,您无法删除最后一项(如果您添加了多个然后单击其中一个上的叉号,你会看到它有效)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-12
  • 1970-01-01
  • 2020-03-20
相关资源
最近更新 更多