jQuery - мой первый плагин, как предотвратить дублирование приложения в элементе - PullRequest
2 голосов
/ 18 января 2011

У меня есть следующее:

$('.comment_content').live('focus click', function() {
    $(this).bTextAreaResizer();
});

Мне нужно, чтобы он работал при клике, потому что поля comment_content иногда появляются динамически после загрузки страницы.Я только что заметил, что это продолжает повторно применять bTextAreaResizer () к текстовой области каждый раз, что приводит к полной остановке браузера.В плагине у меня есть:

(function($){
    $.fn.bTextAreaResizer = function(options) {

    return this.each(function() {

        //bind events
        $(this).bind('scroll keyup', function() {
            resizeTextArea($(this));
        });

Как я могу сказать, только привязать к этому элементу, если мы еще не сделали?Это возможно?

Спасибо

1 Ответ

0 голосов
/ 18 января 2011

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

return this.unbind('.btar')
           .bind('scroll.btar keyup.btar', function() {
                resizeTextArea($(this));
           });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...