2013-04-16 12 views
0

Эта ошибка сводила меня с ума! Во всяком случае, я создал простой JQuery плагин, который я назвал «граница», но я получаю эту ошибку:Uncaught TypeError: Object [object Object] не имеет метода 'border'?

Uncaught TypeError: Object [объект Object] не имеет метод «границы»

Для записи, jQuery включен только один раз, и он включен перед моим плагином.

Я использовал это, чтобы избежать конфликтов:

<pre> 
var $jq = $.noConflict(); 
//$.noConflict(); 
$jq("li").borderX('1px solid blue'); 
</pre> 

EDIT:

Это код моего плагина:

jQuery(document).ready(function ($) { 
    $.fn.borderX = function (params) { 
     params = $.extend({width: 'null', color: 'null', radius: 'null'}, params); 
     this.each(function() { 
      var $t = $(this); 
      var response = jQuery.parseJSON(params); 
      if (typeof response == 'object') { //It is JSON 
       if (params.width) { 
        $t.css('border-width:', params.width); 
       } 
       if (params.color) { 
        $t.css('border-color:', params.color); 
       } 
       if (params.radius) { 
        $t.css('border-radius:', params.radius); 
       } 
      } else { 
       $t.css('border', params); 
      } 
     }); 
     return this; 
    }; 
}); 

HTML-код, из которого я называю плагин по имени «borderX»:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script type="text/javascript" src="jquery.borderX.js"></script> 
<script type="text/javascript"> 
var $jq = $.noConflict(); 
//$.noConflict(); 
$jq("li").borderX('1px solid blue'); 
</script> 

EDIT ° 2:

$.fn.border = function (options) { 
    var params = $.extend({width: 'null', color: 'null', radius: 'null'}, options); 
    this.each(function() { 
     var $t = $(this); 
     var response = jQuery.parseJSON(params); 
     if (typeof response == 'object') { //It is JSON 
      if (params.color) { 
       $t.css('border-color:', params.color); 
      } 
      if (params.radius) { 
       $t.css('border-radius:', params.radius); 
      } 
     } else { 
      $t.css('border', params); 
     } 
    }); 
    return this; 
}; 
+1

А как вы установили плагин? –

+1

Пожалуйста, разместите свой плагин _called «border» _, вы вызываете метод borderX. – undefined

+0

Я фактически изменил имя на "borderX", и я получаю ту же ошибку. Я называю «borderX». – Sherlock

ответ

0

Снять 1-й и последние строки вашего плагина, так что это не завернутые в document.ready

(function($) { 
    $.fn.borderX = function(params) { 
     params = $.extend({width: 'null', color: 'null', radius: 'null'}, params); 
     this.each(function() { 
      var $t = $(this); 
      var response = jQuery.parseJSON(params); 

      if(typeof response == 'object') 
      { //It is JSON 
       if(params.width){$t.css('border-width',params.width);} 
       if(params.color){$t.css('border-color',params.color);} 
       if(params.radius){$t.css('border-radius',params.radius);} 
      } 
      else 
      { 
       $t.css('border',params); 
      } 
     }); 
     return this; 
    }; 
})(jQuery); 
+0

Я сделал, но на самом деле, я получаю еще одну ошибку. Кажется, что 'extend' не распознается: Uncaught TypeError: Невозможно вызвать метод 'extend' undefined – Sherlock

+0

Хорошо, теперь я использовал это: $ jq ("li"). Border ({width: '2px' , цвет: 'красный', радиус: '1px'}); Он генерирует ту же ошибку: Uncaught TypeError: не может вызывать метод 'extend' of undefined – Sherlock

+0

Должно быть что-то противоречивое в другом месте, потому что я могу скопировать и вставить этот код в консоль на этой странице и запустить его без ошибок и добавить границы для все (в приведенном выше коде была опечатка - я удалил ':' из после каждого атрибута стиля.) – Archer

Смежные вопросы