contenteditable:使用行/列修饰符时检测元素更改

时间:2011-11-05 10:38:59

标签: jquery contenteditable detect modifier

我使用上一个帖子中的以下代码来检测(大部分)具有属性“contenteditable”的元素的更改。但遗憾的是,它不包括使用浏览器提供的表行/列修饰符控件时对表格所做的更改(Firefox)

    $('[contenteditable]').live('focus', function() {
       var $this = $(this);
       $this.data('before', $this.html());
       return $this;
    }).live('blur keyup paste', function() {
       var $this = $(this);
       if ($this.data('before') !== $this.html()) {
           $this.data('before', $this.html());
           $this.trigger('change');
       }
       return $this;
    });

如何更改此代码以包含检测浏览器控件强加的更改?

1 个答案:

答案 0 :(得分:1)

作为一种解决方法,我已完成以下工作

  1. 我已为该元素添加了DOMSubtreeModified的事件监听器。
  2. 它频繁发生,所以我添加了setTimeout延迟
  3. 在延迟函数中,我使用上面提到的$(this).data()检查元素的内容是否已经使用相同的方法更改。
  4. 这有点脏,但它可以解决问题。