可能重复:
Is there a jQuery DOM change listener?
How do can watch DOM Object properties?
有没有办法将事件绑定到非输入类型的元素?例如,将事件绑定到更改href属性时触发的锚元素。
答案 0 :(得分:3)
您可以将处理程序绑定到非输入元素(click
,mousemove
等)上的所有类型的事件。但是,当属性发生更改时(例如链接上的href
属性的示例),不会引发(一致的跨浏览器)事件。某些属性(如src
)会导致事件(如load
)作为次要事件,如bfavarello所指出的那样。
(关于元素的"mutation" events有一个现在已经死亡的提议,包括属性更改[种子突变],但它从未被广泛支持。有一个newer proposal,但它还没有广泛地支持。)
您当然可以使用轮询:保存旧值,并定期(通过setTimeout
或setInterval
)查看是否已更改。除非您检查批次元素并且需要经常检查它们,否则这不一定是性能问题。
答案 1 :(得分:3)
DOM Mutation Observers可以做到这一点,但在撰写本文时,它们非常新,并且得不到很好的支持。
您是在撰写扩展程序还是类似程序(即,您不能控制那些修改DOM的代码)?这是这些事件的常见用例之一 - 您无法控制更改DOM的代码。我之前使用的是Mutation Summary,它在Chrome中运行良好。
如果您确实控制了修改DOM的代码 - 即您自己在自己的网站上修改属性 - 您可能希望在修改时自行启动自己的自定义事件属性。
答案 2 :(得分:1)
您可以向祖先添加DomSubtreeModified
侦听器,或者如果您正在使用的浏览器支持,则可以在DOM对象的watch
属性上使用src
。< / p>
myImage.watch("src",function(id, oldval, newval){
document.write("src changed!");
return newval;
});