You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Materialize框架material_select()报Uncaught TypeError错误求助

解决Materialize中material_select()抛出Uncaught TypeError的问题

我完全懂你现在的困扰——同样在document.ready里初始化的方法,sidenav()好好的,material_select()却报类型错误,这种不一致的情况真的很闹心。结合你给出的信息,我整理了几个大概率能解决问题的方向,你可以逐个排查:

  • 先确认Materialize库是否完整引入且顺序正确
    你贴的Materialize脚本链接是截断的,首先得确保你引入的是完整、正确版本的Materialize库,而且必须在jQuery之后引入!Materialize完全依赖jQuery,顺序搞反的话,很多方法根本没法挂载到jQuery对象上,这是这类报错最常见的原因。
    给你个正确的引入示例参考:

    <script src="https://code.jquery.com/jquery-3.2.1.js"></script>
    <!-- 这里用的是Materialize 1.0.0的完整CDN链接,你可以根据自己需求换对应版本 -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
    
  • 检查目标select元素是否在初始化时已经存在
    如果你的select是动态生成的(比如通过AJAX加载数据后渲染、或者用模板引擎生成),那document.ready执行的时候,这个元素可能还没被加到DOM里,自然找不到对应的方法。
    你可以先加个判断确认元素存在,再调用初始化方法:

    $(document).ready(function(){
      $('.sidenav').sidenav();
      const $targetSelect = $('select');
      if ($targetSelect.length > 0) {
        $targetSelect.material_select();
      } else {
        console.log("页面里找不到需要初始化的select元素哦");
      }
    });
    

    如果是动态生成的元素,记得要在元素渲染完成后再调用material_select(),而不是只在document.ready里执行一次。

  • 验证jQuery和Materialize的版本兼容性
    你用的是jQuery 3.2.1,要确认你用的Materialize版本和这个jQuery版本兼容。比如Materialize 1.0.0及以上是支持jQuery 3.x的,但如果是更老的Materialize版本,可能会和jQuery 3.x有语法冲突。要是拿不准,可以换成Materialize官方推荐的对应jQuery版本试试。

  • 排查是否存在脚本冲突
    有时候页面里其他JS库(比如Prototype、Zepto)会和jQuery抢$这个全局变量,导致jQuery的方法被覆盖。你可以试试用jQuery的全名来调用方法,避开冲突:

    jQuery(document).ready(function(){
      jQuery('.sidenav').sidenav();
      jQuery('select').material_select();
    });
    

内容的提问来源于stack exchange,提问作者KaneJM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:30:42