Создайте плагин jQuery, который не отражает результат в одном и том же дублирующем классе

0

Я пытаюсь создать jquery-плагин, который отражает результат только по классу perticular только не на всех одинаковых классах

Плагин jQuery

(function( $ ){
  $.fn.tooltip = function( options ) {    
    var settings = $.extend( {
      'content'         : 'top'      
    }, options);    
    return this.each(function() {       
      $(this).html(settings.content);
    });
  };
})( jQuery );

вызывающий плагин

<body>

<div class="toolbar"></div>

<script type="text/javascript">
$('.toolbar').tooltip({
    content:'this is first'
});
</script>

<div class="toolbar"></div>
<script type="text/javascript">
$('.toolbar').tooltip({
    content:'this is second'
});
</script>

</body>

Я ожидал результата:

this is first   
this is second

Но отображение результата:

this is second
this is second

Итак, как создать плагин, который отражает только конкретный класс.

Теги:
jquery-plugins

1 ответ

2
Лучший ответ

Добавьте класс, чтобы сообщить вашему плагину, что вы уже сделали этот тег, прежде чем что-то подобное

(function( $ ){
  $.fn.tooltip = function( options ) {    
    var settings = $.extend( {
      'content'         : 'top'      
    }, options);    
    return this.not('.tooltiped').each(function() {       
       $(this).html(settings.content);
    }).addClass('tooltiped');
  };
})( jQuery );

Пример:

http://jsfiddle.net/k7m6x/

ОБНОВИТЬ

как предложил Sheikh Heera если вы только меняете содержимое элемента, то этого кода достаточно:

  return this.not('.tooltiped').html(settings.content).addClass('tooltiped');
  • 0
    Почему each цикл работает только тогда, когда изначально доступен только один элемент.
  • 1
    Этого достаточно, чтобы return this.not('.tooltiped').html(settings.content).addClass('tooltiped');
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню