【问题标题】:Mixitup - Uncaught TypeError: Cannot read property 'left' of undefinedMixitup - 未捕获的类型错误:无法读取未定义的属性“左侧”
【发布时间】:2014-01-12 12:45:36
【问题描述】:

使用默认的mixitup 配置$('#id').mixitup(),我通过为按钮<li> 标记附加html 代码来动态添加过滤器按钮。并在向页面添加 html 代码后立即再次调用相同的函数,以使新按钮起作用。单击页面上的一些过滤器按钮后(即使我没有按新按钮)动画效果中断并在浏览器控制台上看到:

未捕获的类型错误:无法读取未定义错误的“左侧”属性。

错误发生在第 937 行:

$toshow.each(function () {
    var data = this.data;
    data.tX = data.finalPos.left - data.showInterPos.left; //HERE

我在文档中看到如何使用 jquery after 方法将新图像添加到列表中,但是没有关于如何动态添加过滤器按钮并即时初始化它们的说明。

所描述的行为是预期的吗? 这意味着我做错了什么。那么,如何正确初始化新的过滤按钮呢?

我正在使用 Mixitup 1.5.6(最新)和 jQuery 1.10.2(也尝试使用 jQuery 2.0.3)。

提前致谢!

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    您的问题是 data.finalPos 或 data.showInterPos 未定义。定义后的console.log数据,看看你是否有这些键

    $toshow.each(function () {
        var data = this.data;
        console.log(data); //here
        data.tX = data.finalPos.left - data.showInterPos.left;
    

    【讨论】:

    • 您是否建议对 Mixitup 插件源代码进行调试操作?
    • 上面的代码是源码吗?我以为是你写的代码。无论哪种方式, data.finalPos 或 data.showInterPos 都是未定义的。你需要看看为什么它是未定义的。
    • 为了拥有这样的功能,与其洗手自己写,不如尝试使用这些很棒的现成插件:) 我想我应该等待另一个答案,谢谢无论如何;)
    • 我通常不得不重新编写其他插件,以至于我学会了自己从头开始。 :) 我希望你能找到答案。
    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 2021-12-22
    • 2015-01-06
    • 2017-07-26
    • 2019-02-26
    • 2021-12-25
    相关资源
    最近更新 更多