2

我想观察使用 contenteditable 编辑的元素的 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);
  });

但不是 contenteditable 的节点值(它的文本内容):

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

这是现场示例:

http://jsbin.com/iconi/edit

任何人都知道如何调整 watch 方法以使用 nodevalue。谢谢!

4

1 回答 1

0

这不是更简单吗?

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

至于输入:

 $('#input')
    .bind('change keyup',
       function() {
          $('#text')
             .text($(this).val());
       }
    );
于 2009-10-10T16:06:02.453 回答