2014-09-16 2 views
0

В принципе, я пытаюсь создать редактор bbcode с текстовым полем, несколькими кнопками и jQuery. Вот моя форма:Получение коллекции в плагине jQuery

<div class="form-group"> 
    <div class="btn-group btn-group-sm"> 
     <button type="button" class="btn glyphicon bbcode" rel="bold"><b>B</b></button> 
     <button type="button" class="btn glyphicon bbcode" rel="italic"><i>I</i></button> 
    </div> 

</div> 
<div class="form-group"> 
    <textarea class="bbcode" rel="editor" cols="100" rows="12"></textarea> 
</div> 

и мой плагин вызывается с помощью:

<script> 
    $('document').ready(function() { 
     $('.bbcode').bbcode(); 
    }); 
</script> 

и сам плагин, я просто пытаюсь получить основы сделано на минуту, чтобы обновить данные текстового поля, когда нажимается кнопка:

(function($) { 
    "use strict"; 

    $.fn.bbcode = function() { 

     this.click(function() { 
      var rel = $(this).attr('rel'); 
      if (rel == 'editor') { 
       return this; 
      } else { 
       alert($(this).attr('rel')); // I can see this pop up so the click event is firing 
       $('.bbcode[rel=editor]').val('test'); 
       return this; 
      } 
     }); 
    } 
} (jQuery)); 

Это, кажется, единственный способ, которым я могу подобрать текстовое поле, я не хочу, чтобы жёстко класс я хочу, как это. Я думаю, что то, что я ищу, это способ получить сборку из вызова функции в тегах скриптов.

Это более чем вероятно что-то глупое/очевидное. Я упустил из виду.

+1

Что вы подразумеваете под "коллекцией?" –

+0

Вы хотите '$ (this) .find (" [rel = editor] "). Val (" test ")'? – soktinpk

+0

В этом примере его коллекция представляет собой элементы DOM, возвращаемые $ ('.bbcode'), возможно, это неправильный термин для этого? – user288591

ответ

1

Значение this в непосредственной близости относится к коллекции. Тем не менее, он затенен this внутри вашего обработчика кликов (который ссылается на элемент, который нажал), поэтому вы не можете получить к нему доступ.

Создайте переменную для хранения this, и это будет ваша коллекция.

(function ($) { 
    "use strict"; 

    $.fn.bbcode = function() { 
     var $editors = this; 
     this.click(function() { 
      var rel = $(this).attr('rel'); 
      if (rel == 'editor') { 
       return this; 
      } else { 
       alert($(this).attr('rel')); // I can see this pop up so the click event is firing 
       $editors.val('test'); 
       return this; 
      } 
     }); 
    } 
}(jQuery)); 
+0

спасибо, вот он отсортирован, кажется таким очевидным сейчас – user288591

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