2011-06-10 38 views
0

错误消息(最后行)我的自定义功能:据jQuery的中不是一个函数

$( “选择”)的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(); 
    } 
}); 

有人可以帮忙吗?

+0

为什么我用你的代码,我没有得到任何错误。 – Tomgrohl 2011-06-10 12:31:27

+0

[http://jsfiddle.net/eAaBe/](http://jsfiddle.net/eAaBe/)确实有效。 (一个提示:运行JSLint) – Melvin 2011-06-10 12:39:04

+0

是的,看不出有什么问题。 $(“select”)。selectList当然是*函数。这段代码之外有什么奇怪的东西吗? – 2011-06-10 12:45:11

回答

相关问题