根据jQuery,我的自定义函数不是一个函数

According to jQuery my custom function in not a function

本文关键字:一个 函数 jQuery 我的 自定义函数 根据      更新时间:2023-09-26

错误消息(最后一行):

$("select").selectList不是功能

代码:

(function( $ ){
  $.fn.selectList = function(options) {
    var settings = {
        'buttonClass' : 'custom-select',
        'buttonTextClass' : 'custom-select-status',
        'buttonIconClass' : 'custom-select-button-icon',
        'menuClass' : 'custom-select-menu',
        'menuClassHidden' : 'custom-select-menu-hidden'
    }
    $('body').click(function() {
       $('.' + settings.menuClass).each(function() {
           $(this).addClass(settings.menuClassHidden);
       })
    });
    return this.each(function() {
        if (options) {
            $.extend(settings, options);
        }
        var $this = $(this).hide(),
            $menu = $('<ul></ul>').addClass(settings.menuClass)
                                  .addClass(settings.menuClassHidden),
            optionsTexts = new Array(),
            currIdx;
        $this.find('option').each(function(idx) {
            var $opt = $(this);
            if ($opt.is(':selected')) {
                currIdx = idx;
            }
            optionsTexts[idx] = $opt.text();
        })
        for (var i = 0; i < optionsTexts.length; i++) {
            var $item = $('<li></li>'),
            $link = $('<a href="#">' + optionsTexts[i] + '</a>');
            if (i == currIdx) {
                $item.addClass('selected');
            }
            $link.click(function() {
               var linkIdx = $link.parent().parent().find('li').index($link.parent());
                $this.find('option').eq(linkIdx).attr('selected', 'selected');
                $menu.prev().find('.' + settings.buttonTextClass).text($link.text());
                if ($menu.hasClass(settings.menuClassHidden)) {
                    $menu.removeClass(settings.menuClassHidden);
                } else {
                    $menu.addClass(settings.menuClassHidden); 
                }
            });
            $item.append($link); 
            $menu.append($item); 
        }
        $menu.insertBefore($this);
        $('<a href="#"></a>')
        .html('<span class="'+ settings.buttonTextClass + '">'+ optionsTexts[currIdx] +'</span><span class="' + settings.buttonIconClass + '"></span>')
        .addClass(settings.buttonClass)
        .insertBefore($menu)
        .click(function() {
            $('.custom-select-menu').addClass(settings.menuClassHidden);
            $menu.hasClass(settings.menuClassHidden) 
                ? $menu.removeClass(settings.menuClassHidden)
                : $menu.addClass(settings.menuClassHidden);
            return false;
        });
    });
  };
})(jQuery);

$(document).ready(function() {
    if (! $('.section-admin').length > 0) {
        $('select').selectList();
    }
});

有人能帮忙吗?

这非常有效。

请参阅此处的工作示例:Custom jQuery工作于

请检查某个地方,不知何故,您没有初始化jQuery两次。请参阅以下答案:https://stackoverflow.com/a/33054683/1712145