jQuery监控表的变化?

时间:2011-04-26 01:14:52

标签: javascript jquery dom

我有一个插件显示/隐藏表格中的列。

但是我也在表上使用了其他几个插件,因此该表非常动态。

我正在寻找一种方法来监控表格,无论什么时候发生。

例如

添加行,删除行,隐藏行...

是否有任何dom元素的常规.change()事件?

3 个答案:

答案 0 :(得分:4)

您可以绑定到DOM事件:

$(document).ready(function(){
    $(document).bind('DOMNodeInserted', function(event){
        console.log('inserted '+event.target.nodeName + ', parent: '+event.relatedNode.getAttribute('id'));
    });
    $(document).bind('DOMNodeRemoved', function(event){
        console.log('removed');
    });
    $(document).bind('DOMSubtreeModified', function(event){
        console.log('modified '+event.target.getAttribute('id'));
    });

    $('#tbl').append($('<tr></tr>').
                    attr('id', 'newrow'));
});

<强> Fiddle here

当然,您的元素必须具有标识符才能使其有用。

答案 1 :(得分:2)

您可以使用livequery检测添加/删除行的时间:

$("tr").livequery(function() {
  console.log($(this) + " was added");
}, function() {
  console.log($(this) + " was removed");
});

答案 2 :(得分:2)

不幸的是,没有用于操纵DOM的跨浏览器更改事件。你有几个选择:

  1. 使用操纵表格的功能也可以执行其他操作。
  2. 创建发布/订阅系统以发布和订阅您自己的自定义表事件。