2013-06-14 6 views
1

Я попытался найти ответ, но я не уверен, как его изложить, не объясняя это первым. Во всяком случае, это пример того, как я называю плагин:Создал плагин jquery, и он работает, но у меня есть последнее, что я не могу понять

$('body').myPlugin({container: 'exampleA', amount:4}); 

Дело в том, где говорит «тело», кажется, бесполезно, я могу поставить любой элемент там, и она отлично работает. Я бы предпочел, чтобы он сказал что-то вроде ....

$('.exampleA').myPlugin({amount:4}); 

... а затем сообщить плагину, чтобы использовать примерА для контейнера. Правильно ли я считаю, что это действительно возможно? Как мне изменить свой плагин, чтобы добиться этого?

Вот пример моего плагина:

(function($){ 
$.fn.extend({ 
    myPlugin: function(options) { 
     var defaults = { 
      container : 'list_container', 
      amount : 2 
     } 
     var options = $.extend(defaults, options); 
     return this.each(function() { 
      var o = options; 
      //Start 
      $('.'+o.container+' ul').each(function(){ 
       //DO STUFF HERE.... 
      }); 
      //End 
     }); 
    } 
}); 
})(jQuery); 

я могу отправить фактический код/​​плагин, если мне нужно, я просто подумал, что может быть проще объяснить, что я пытаюсь сделать, если я опубликовал простой пример.

ответ

0
$.fn.myPlugin = function (options) { 
    var defaults = { 
     amount: 2 
    } 
    var options = $.extend(defaults, options); 
    return this.each(function() { 
     $('ul', this).each(function() { 
      //DO STUFF 
     }); 
    }); 
} 

FIDDLE

+0

Большое спасибо! Я знал, что это должно быть что-то простое, я просто не знал, что – Shonna

+0

@Shonna - добро пожаловать! Не забудьте принять ответ, если он был полезен. – adeneo

0
(function($){ 
$.fn.extend({ 
myPlugin: function(options) { 
    var defaults = { 
     container : 'list_container', 
     amount : 2 
    } 
    var options = $.extend(defaults, options); 
    return this.each(function() { 
     var o = options; 
     //Start 
     $(this).children('ul').each(function(){ 
      //DO STUFF HERE.... 
     }); 
     //End 
    }); 
} 
}); 
})(jQuery); 
0

this в вашем плагине - это выбор jQuery. Если вы используете find в этой коллекции, он должен быть привязан к контейнерам внутри выбранных элементов.

$.fn.extend({ 
    myPlugin: function(options) { 
     var defaults = { 
      container : 'list_container', 
      amount : 2 
     } 
     var options = $.extend(defaults, options); 
     this.find('.' + options.container + ' ul').each(function(){ 
      //DO STUFF HERE.... 
     }); 
    }); 
} 
Смежные вопросы