javascript - jQuery 每个函数抛出错误 : Uncaught TypeError: Cannot read property

标签 javascript jquery

我正在为我的项目创建一个自定义的step.js 应用程序。我在对象范围上遇到错误。下面是我的代码

var STEPPED = {
    el: {
        stepContentDiv: $('#stepContent'),
        stepNavDiv:     $('#stepNav'),
        stepNavLi:      $('#stepNav li'),
        stepNavAnchor:  $('#stepNav li a'),
        stepNavDone:  $('#stepNav li a'),
        stepNavActive:  $('#stepNav li a')
    },
    doActive: function(){
        this.el.stepNavDone.on('click', function(){
            this.el.stepNavLi.each(function(){
                alert();
            });
        });
    },
    init: function(){
        this.doActive();
    }
}
STEPPED.init();

运行时出现错误

this.el.stepNavLi.each(function(){
    alert();
});

Uncaught TypeError: Cannot read property 'stepNavLi' of undefined

任何人都可以帮我解决这里的问题吗?提前致谢

最佳答案

click 事件处理函数中,this 指的是被单击的元素,而不是 STEPPED 对象。如果您想在单击处理程序中保留对该对象的引用,则需要将对该对象的引用缓存在变量中。试试这个:

doActive: function() {
    var _stepped = this;
    _stepped.el.stepNavDone.on('click', function(){
        _stepped.el.stepNavLi.each(function(){
            alert();
        });
    });
},

关于javascript - jQuery 每个函数抛出错误 : Uncaught TypeError: Cannot read property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40284829/

相关文章:

javascript - 带有 Node.js 的 Arduino 无法工作

javascript - jQuery UI - 切换幻灯片从右上角出现

javascript - 移动 slider 时在图像之间切换

javascript - 如何使用 jQuery 为多个不同的事件触发器触发一个通用处理程序?

javascript - 使用 AJAX 附加 PHP 代码

javascript - 使完美的滚动条默认可见

javascript - 如何使用 Javascript 动态创建数组?

jquery - 比较同一类的多个元素的属性,看看它们是否相同?

javascript - 在 jQuery 中使用 .children 和 .find

jquery - 我只能在移动设备上使用 jasny-boostrap 的 rowlink 吗?