控制台显示Uncaught TypeError:对象不是函数,其他一切正常

时间:2014-07-02 17:56:46

标签: javascript jquery knockout.js

简短代码示例:http://jsfiddle.net/j2nsg/2/

JS:

function AppViewModel() {
    var self = this;
    self.values = ko.observableArray([{annotation:"blah2"}, {annotation:"blah4"}]);
}
$("#delete").click(function() {
    var removeMe = {annotation: "blah2"};
    model.values.remove(function(item) {
        return _.isEqual(item, removeMe); //this is just a deep equals between objects, actual code has far more complex stuff
    });
});

var model = new AppViewModel();
ko.applyBindings(model);

HTML:

<div id="Menu">
    <p>Stuff In list:</p>
    <select id="resultsDb" data-bind="foreach:values">
        <option data-bind="text:annotation">
    </select>
</div>
<br>
<a href="javascript:null()" id="delete">delete</a>

所有这一切都是在knockout中填充一个可观察的数组,并提供了一个按钮,用于在单击时删除元素。但是,如果单击该按钮,控制台将显示错误Uncaught TypeError: object is not a function。从功能的角度来看,的所有内容都会出现。有没有办法解决这个错误(如果它甚至是一个错误)?

编辑:错误行(对于chrome)表示VM994:1,(匿名函数)

2 个答案:

答案 0 :(得分:2)

这是由尝试调用null而不是函数引起的。您可以使用javascript:null()代替#,甚至可以完全取消href

答案 1 :(得分:0)

我想你想要javascript:void(null)

无论哪种方式,你都应该用淘汰而不是jquery来处理你的点击。此外,通常最好不要使用a元素作为这样的按钮。您最好使用buttonspan