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

Materialize CSS Select组件二次调用material_select()报错求助

解决Materialize CSS Select二次初始化的TypeError问题

嘿,我太懂你这种困扰了——Materialize的select组件确实好用,但动态更新后重新初始化时总会出些小状况,我之前也踩过这个坑!

这个Uncaught TypeError报错大概率是因为你在重新初始化前没销毁原有的Materialize实例,DOM里残留的旧实例和新的初始化调用撞车了。试试按这个流程来:

  • 第一步:填充新选项前,先销毁已有的select实例:
    $('select').material_select('destroy');
    
  • 第二步:执行你原来的填充select选项的函数
  • 第三步:重新初始化Materialize select组件:
    $('select').material_select();
    

还有几个小细节能帮你避坑:

  • 如果是异步填充选项(比如从接口拉数据),一定要等数据完全插入DOM后再执行初始化,不然会因为DOM还没更新完找不到元素报错。
  • 尽量给需要动态更新的select加专属类/ID,别用全局的$('select'),避免影响页面上其他不需要更新的select组件,比如用$('.dynamic-select').material_select()会更精准。

给你个完整的示例参考:

// 动态更新select的函数
function refreshSelectOptions() {
  // 先销毁旧实例
  $('.dynamic-select').material_select('destroy');
  
  // 清空原有选项并添加新内容
  $('.dynamic-select').empty();
  $('.dynamic-select').append('<option value="opt1">新选项1</option>');
  $('.dynamic-select').append('<option value="opt2">新选项2</option>');
  
  // 重新初始化组件
  $('.dynamic-select').material_select();
}

要是还报错,再检查下:

  • Materialize JS有没有在jQuery之后加载(它依赖jQuery,顺序错了会出各种问题)
  • 第一次初始化是不是放在$(document).ready()里执行的,确保DOM加载完成后再初始化

希望这些方法能帮你搞定问题!

内容的提问来源于stack exchange,提问作者Emil Wismann Kirkebæk-Jensen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:06:48