2009-10-09 2 views
2

Я хочу наблюдать за изменением элемента nodeValue элемента, отредактированного с помощью contenteditable. В принципе, я хочу запустить функцию при изменении значения nodevalue.jQuery: Наблюдение за изменением nodevalue

Я нашел этот пост: http://james.padolsey.com/javascript/monitoring-dom-properties/

который, кажется, есть плагин для того, что я хочу.

Вот часы плагин:

jQuery.fn.watch = function(id, fn) { 

    return this.each(function(){ 

     var self = this; 

     var oldVal = self[id]; 
     $(self).data(
      'watch_timer', 
      setInterval(function(){ 
       if (self[id] !== oldVal) { 
        fn.call(self, id, oldVal, self[id]); 
        oldVal = self[id]; 
       } 
      }, 100) 
     ); 

    }); 

    return self; 
}; 

В качестве примера, я могу смотреть значение входного как это:

$('#input').watch('value', function(propName, oldVal, newVal){ 
    $("#text").text(newVal); 
    }); 

Но не nodevalue contenteditable (его содержание текста):

$('#ce').watch('nodeValue', function(propName, oldVal, newVal){ 
    $("#text").text(newVal); 
    }); 

Вот живой пример:

http://jsbin.com/iconi/edit

Кто-нибудь знает, как адаптировать метод часов для работы с nodevalue. Благодаря!

ответ

0

Разве это не проще?

$('#ce') 
    .bind('change keyup', 
     function() { 
      $('#text') 
      .text($(this).text()); 
     } 
    ); 

Что касается ввода:

$('#input') 
    .bind('change keyup', 
     function() { 
      $('#text') 
      .text($(this).val()); 
     } 
    ); 
+0

Спасибо за ваше предложение. Проблема изменилась, для элементов div нет события изменения. Это означает, что скопированный и вставленный текст не будет сохранен. – Jourkey

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

  • Нет связанных вопросов^_^