2012-02-28 2 views
0

Эта вещь работает, но каждый раз, когда я нажимаю элемент, который я хочу получить, он «подсчитывает» клики, а затем печатает записи журналов за одинаковое количество кликов.Событие jQuery focusout, повторяющее сам вопрос

например, если я щелкнул элемент 3 раза подряд (а затем щелкнув снаружи, чтобы вызвать фокус), он печатает 3 комментария журнала, если я затем нажму 2 раза (и снова за пределами), он печатает 5 log Комментарии.

и я хочу получить только 1 log комментарий каждый раз, когда я нажимаю на элемент.

Помогите кому-нибудь?

$("#main-wrapper").click(function (e) { 
    var contenteditable = $(e.target).attr('contenteditable'); 
    if (contenteditable == 'true') { 
     $(e.target).focusout(function() { 
      var content = $(this).html(); 
      console.log("get: " + content); 
     }); 
    };   
}); 

ответ

2

Попробуйте развязать мероприятие.

$("#main-wrapper").click(function (e) { 
var contenteditable = $(e.target).attr('contenteditable'); 
if (contenteditable == 'true') { 
    $(e.target).unbind('focusout').focusout(function() { 
     var content = $(this).html(); 
     console.log("get: " + content); 
    }); 
};   
}); 
+0

Если я ошибаюсь, это также отвяжет обработчик 'click', поэтому это будет работать только для первого щелчка. Вы должны иметь возможность делать unbind ('focusout') 'хотя. –

+0

работает отлично! большое спасибо!!!! – user1095749

0

Вы подключаете новый обработчик focusout события каждый раз, когда вы справиться с click. Эти обработчики событий не заменены, но добавлено, и каждый обработчик событий выполняется при срабатывании события. Вот почему вы получаете такое же количество зарегистрированных сообщений, как и предыдущие клики.

Вы должны уметь указывать обработчик focusout только один раз, но как вы хотите, чтобы он срабатывал, конечно, зависит от того, что вы хотите выполнить.

$("#main-wrapper").focusout(function (e) { 
    var contenteditable = $(e.target).attr('contenteditable'); 
    if (contenteditable == 'true') { 
    var content = $(this).html(); 
    console.log("get: " + content); 
    }   
}); 
Смежные вопросы