调用jquery对象函数称为历史

时间:2014-07-30 10:19:36

标签: javascript jquery

我有这段代码:

var history = {
    stack   : [],
    counter : -1,
    add     : function(item){
        this.stack[++this.counter] = item;
        this.doSomethingWith(item);

        // delete anything forward of the counter
        this.stack.splice(this.counter+1);
    },
    undo : function(){
        this.doSomethingWith(this.stack[--this.counter]);
    },
    redo : function(){
        this.doSomethingWith(this.stack[++this.counter]);
    },
    doSomethingWith : function(item){
        // show item
    }
};

当我尝试以这种方式使用它时,它不起作用;

var item = $('#myDiv');
history.add(item);

我有这个错误:

  

未捕获的TypeError:undefined不是函数

我该如何解决这个问题?谢谢!

3 个答案:

答案 0 :(得分:3)

问题是您为对象选择了错误的名称。 History对象中的内置版本可用window.history。所以将你的名字改名为别的东西,它应该有效。例如:

var appHistory = {
    stack   : [],
    counter : -1,
    ...
};

您也可以通过将代码包装到IIFE中来修复它,以便history成为局部变量。但我仍然建议选择不那么令人困惑的名字。

答案 1 :(得分:1)

如果你把它放在其他代码后面它会很好:

var item = $('myDiv');
history.add(item);

如果将它放在前面,则尚未定义该功能。 工作示例:http://jsfiddle.net/LqrpW/

答案 2 :(得分:0)

$('myDiv')替换为$('.myDiv')$('#myDiv')