在函数执行之间保持变量(Javascript)

时间:2013-02-08 01:18:57

标签: javascript variables

我有一个JavaScript函数,每次点击其中一个链接时都会运行。函数首先检查点击链接的id是什么,然后运行if stement。根据链接的ID,定义了不同的变量。

所有这一切都有效,但问题是有些链接定义了一个变量,而其他链接定义了另一个,我需要保留在为函数的其他执行定义的函数的先前执行中定义的变量。

以下是一个例子:

$(document).ready(function()
{
  $(".sidebar a").click(function(event) {
    event.preventDefault()
    var targetID = $(this).attr("data-target")
    $("#" + targetID).attr("src", $(this).attr("href"))
    var element = $(this).attr("class")
    if (element == "submit") {
      var submit = $(this).attr("user")
      alert("1")
    } else if (element == "view") {
      var view = $(this).attr("user")
      alert("2")
    }
  })
  window.history.replaceState({}, 'logs', '/file/path?submit=' + submit + '&' + 'view=' + view)
})

由于

4 个答案:

答案 0 :(得分:1)

在外部范围中定义变量:

$(document).ready(function () {
    var submit;
    var view;

    $(".sidebar a").click(function (event) {
        event.preventDefault();
        var targetID = $(this).attr("data-target");
        $("#" + targetID).attr("src", $(this).attr("href"));
        var element = $(this).attr("class")
        if (element == 'submit') {
            submit = $(this).attr("user")
            alert("1")
        } else if (element == 'view') {
            view = $(this).attr("user")
            alert("2")
        }
    });
});

答案 1 :(得分:1)

你可以使用一个外部函数,它只会声明一些变量并返回一个内部函数。内部函数可以访问外部作用域中的变量,这些变量对于函数的每次调用都保持不变。

实施例

var next = (function() {
    var value = 0;
    function next() {
        return value++;
    }
}());

console.log(next());
console.log(next());
console.log(next());

现场演示

http://jsfiddle.net/bikeshedder/UZKtE/

答案 2 :(得分:0)

在函数外部创建var submit和view,使其具有全局范围。

答案 3 :(得分:0)

您可以使用JQuery的.data()函数在匹配的元素上存储任意数据。

示例:

$(this).data("submit", $(this).attr("user")); // set a value

var submit = $(this).data("submit"); // retrieve a value

这将数据置于JQuery对元素的知识的上下文中,因此它可以在函数调用之间共享,甚至可以在不同事件之间共享。