相关疑难解决方法(0)

为内容更改创建jQuery特殊事件

我正在尝试创建一个jQuery特殊事件,当绑定的内容发生更改时触发该事件.我的方法是使用setInterval检查内容,并检查内容是否从上次更改.如果你有更好的方法,请告诉我.另一个问题是我似乎无法清除间隔.无论如何,我需要的是使用event.special检查内容更改的最佳方法.

(function(){

    var interval;

    jQuery.event.special.contentchange = {
        setup: function(data, namespaces) {
            var $this = $(this);
            var $originalContent = $this.text();
            interval = setInterval(function(){
                if($originalContent != $this.text()) {
                    console.log('content changed');
                    $originalContent = $this.text();
                    jQuery.event.special.contentchange.handler();
                }
            },500);
        },
        teardown: function(namespaces){
            clearInterval(interval);
        },
        handler: function(namespaces) {
            jQuery.event.handle.apply(this, arguments)
        }
    };

})();
Run Code Online (Sandbox Code Playgroud)

并绑定它像这样:

$('#container').bind('contentchange', function() {
        console.log('contentchange triggered');
});
Run Code Online (Sandbox Code Playgroud)

我得到console.log'内容已更改',但没有得到console.log'内容更改已触发'.所以很明显,回调永远不会被触发.

我只是使用Firebug来更改内容并触发事件,以测试它.

更新
我认为我不够清楚,我的代码实际上没有用.我正在寻找我做错的事.


这是任何感兴趣的人的完成代码

(function(){

    var interval;

    jQuery.event.special.contentchange = {
        setup: function(){
            var self = this,
            $this = $(this),
            $originalContent = $this.text();
            interval = setInterval(function(){ …
Run Code Online (Sandbox Code Playgroud)

javascript jquery events javascript-events intervals

15
推荐指数
1
解决办法
2万
查看次数