【问题标题】:$(...).selectpicker is not a function$(...).selectpicker 不是函数
【发布时间】:2017-09-07 23:15:48
【问题描述】:

我正在为表单使用引导选择。我在 HTML 文件的标题中包含脚本(jquery、bootstrap-select)。

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.2/css/bootstrap-select.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.2/js/bootstrap-select.min.js"></script>
<link rel="stylesheet "type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

所有具有“selectpicker”类的选择元素都正确调用。选择元素示例:

<select id="test" class="selectpicker">
        <option>Mustard</option>
        <option>Ketchup</option>
        <option>Relish</option>
</select>

但是,如果我在同一页面上调用以下脚本

<script>
$(document).ready(
    function () {
        $('#test').selectpicker('val', 'Relish')
});
</script>

我收到了这个讨厌的错误

$(...).selectpicker 不是函数

查看 Google Chrome 中的源选项卡,我发现 bootstrap-select.min.js 加载良好。有人有建议吗?

【问题讨论】:

标签: javascript jquery bootstrap-selectpicker


【解决方案1】:

如果您在 bootstrap-select.min.js 之后加载了另一个 jquery.js 引用,它将清除 $(...).selectpicker 函数和其他函数。确保 bootstrap-select.min.js 最后加载。

【讨论】:

  • 就是这样。 Jquery 在我的解决方案中被愚蠢地加载了两次。非常感谢,真是菜鸟的错误。
  • 我试过这个但没有工作..仍然说 Uncaught TypeError: $(...).selectpicker is not a function @Djov
  • 我发现解决方案 .selectpicker() 在 document.ready() 中工作
【解决方案2】:

尝试在 bootstrap-select 之前加载 bootstrap ;-)

<link rel="stylesheet "type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.2/css/bootstrap-select.min.css">

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.2/js/bootstrap-select.min.js"></script>

【讨论】:

    【解决方案3】:

    无论出于何种原因,这都需要通过 jquery 调用

    $("#MyDropDown").selectpicker('render');
    

    这个(非 jquery)会产生错误:

    mdd = document.getElementById("MyDropDown");
    mdd.selectpicker('render');
    

    我很想知道为什么。

    【讨论】:

    • 嗨,因为 SelectPicker 是一个 jquery 库,这意味着它只能与从 dom 中选择的 Jquery 'objects' 而不是 'real' 元素一起工作和反应,如果你搜索得更好,你会发现jquery 返回的元素(使用$('#elemnt-id'))与document.getElementById("elemnt-id"); 有很大不同。
    • 感谢@HichamO-Sfh,这是有道理的。
    猜你喜欢
    • 2016-12-07
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2020-02-05
    • 2014-10-25
    相关资源
    最近更新 更多