如何声明document.on()侦听器使用jQuery更改特定选定元素的文本?

时间:2014-05-17 21:28:10

标签: javascript jquery

我尝试使用用例清楚地定义我的问题,所以这里是:

考虑<a class="fruit" href=#>apple</a>而不是苹果可以是任何水果。我想在侦听器上声明一个jQuery,如下所示,任何时候创建水果类的dom元素,并添加我的监听器对该元素执行某些操作的身体的任何部分。

$(文件).on(“这里是问题”,“。水果”,函数(){对这里的水果做点什么}};

我知道有一些替代方法可以达到结果,但由于某些复杂性原因,这就是我想解决这个问题的方法。

这只需要在Chrome中使用。

1 个答案:

答案 0 :(得分:1)

如果您正在尝试监视何时创建具有特定类名的DOM元素并将其添加到DOM,那么您无法使用直接jQuery来执行此操作,因为没有良好的跨浏览器(即在旧浏览器中工作)这样做的方式并不是jQuery试图解决的问题。

有一个叫做变异观察者(MDN reference here)的新界面(需要IE 11),它可以让你监视某些类型的DOM变化,当你把项目添加到DOM和你时你可以获得一个事件可以检查一下他们是不是你的班级。如果你真的只需要它在Chrome中工作,这应该就是你想要的。

使用setInterval()定期检查DOM以进行更改时,还有旧备用(电池寿命不佳)技术。

或者,您还可以更详细地描述您从更高级别解决您正在尝试解决的问题,我们可能会提供其他想法。

这里有一些使用变异观察者的示例代码:

$(document).ready(function() {
    // create an observer instance
    var observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            for (var i = 0; i < mutation.addedNodes.length; i++) {
                if (mutation.addedNodes[i].className === "fruit") {
                    console.log("found fruit", mutation.addedNodes[i]);
                }
            }
      });    
    });

    // configuration of the observer:
    var config = { childList: true, subTree: true };

    // pass in the target node, as well as the observer options
    observer.observe($("#container")[0], config);    
});

并且,一个有效的演示:http://jsfiddle.net/jfriend00/zxEXp/