如何窥探$(“<p>”)电话?</p>

时间:2011-10-26 19:40:16

标签: jquery

我想知道我是如何窥探dom修改事件的。我尝试使用$ .sub()来监听,但是使用jquery中的另一个包装来获得这种影响似乎有点过量。

演示在这里http://jsfiddle.net/sr5RE/2/

即这是有效的

var $sub = jQuery.sub();

$sub.fn.init = function(selector){
    alert("Success");
    return $.fn.init.apply($sub.fn.init, arguments);
};

$sub("<p/>");

但是调用$然后它不会

$("<p/>");

显然这将循环

$.fn.init = function(selector){
    alert("Success");
    return $.fn.init.apply($sub.fn.init, arguments);
};

$("<p/>");

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以覆盖$.fn.init,只需先获取对原始引用的引用:

(function(){
    var originalInit = $.fn.init;

    $.fn.init = function(selector){
        alert("Success: " + selector);
        return originalInit.apply($sub.fn.init, arguments);
    };
})();

$("<p/>");

演示:http://jsfiddle.net/sr5RE/3/

但是,这可能无法帮助您获取DOM修改事件。您可能想要了解Live Query的来源。它是一个jQuery插件,当匹配选择器的元素出现并从文档中消失时触发回调,它通过覆盖特定的与修改相关的jQuery方法来实现。