TypeError:s未定义 - Superfish在WordPress网站上

时间:2014-04-05 17:54:33

标签: javascript jquery wordpress superfish

我第一次在这里提问,所以如果我没有正确地做,我会事先道歉。

我收到此错误:

  

TypeError:s未定义

当我点击小于1020px的设备上显示的切换菜单时。

我正在使用superfish进行切换菜单并且工作正常,直到我在我的目录中添加了一个新的JS文件并在我的function.php中注册并排队。

我必须单击两次才能切换菜单,这就是我检查firebug控制台错误的原因。

亚当评论后更新: 在Chrome控制台中,我收到此消息: “未捕获的TypeError:无法调用未定义的方法'替换'” 在我的superfish.min.js文件中。不确定我是如何在.min文件中找到该行的。 但是我在.min文件中找到了这一行。 {return s.replace(/ display [^;] +;?/ g,“”)}

以下是我用于菜单的代码。

jQuery(document).ready(function($) {

if( $('.mobile-primary-toggle').length || $('.mobile-secondary-toggle').length ) {
    if(dynamik_sf_enabled) {
        var sf = $('ul.js-superfish');
    }

    $('.responsive-primary-menu-container').click(function() {
        if(dynamik_sf_enabled && dynamik_reveal_sub_pages) {
            sf.superfish('destroy');
        }
        $('.nav-primary').slideToggle();
        $('#nav').slideToggle();
    });

    $(window).resize(function() {
        if(dynamik_sf_enabled && dynamik_reveal_sub_pages) {
            if(window.innerWidth <= media_query_small_width) {
                sf.superfish('destroy');
            } else {
                sf.superfish('init');
            }
        }
        if(window.innerWidth > media_query_small_width) {
            $('.nav-primary').removeAttr('style');
            $('#nav').removeAttr('style');
        }
    });
}

});

有关如何解决此问题的任何建议吗?

1 个答案:

答案 0 :(得分:0)

  1. 确保sf始终有值,这就是问题所在。
  2. 取$(窗口).resize(function(){在if语句之外和ready函数之外;因为调整窗口的大小可以随时发生,它依赖于sf有值。

    $.(function(){ $(window).resize(function() { if(dynamik_sf_enabled && dynamik_reveal_sub_pages) { if(window.innerWidth <= media_query_small_width) { sf.superfish('destroy'); } else { sf.superfish('init'); } } if(window.innerWidth > media_query_small_width) { $('.nav-primary').removeAttr('style'); $('#nav').removeAttr('style'); } }); });