仅<a> tags?</a>上的DOMSubtreeModified事件(和/或替换)

时间:2012-01-14 00:51:30

标签: javascript jquery html events dom

我已经注意到DOMSubtreeModified事件已被弃用(这是一个令人遗憾的消息),但我想知道是否有办法检测页面上每个标签的变化(我知道 - 这可能真的很贵,但是它有其目的)。

基本上,我想知道每当创建/修改<a>标记(节点)时,我都可以快速扫描它的.href,看看它是否与我正在寻找的模式匹配(如果是的话,我想要重定向它来运行我的JS(与此无关),而不是导航到所述链接)。我需要这是通用的(我不知道ID / div /除了它们是<a href>之外的任何东西,并且它们有我正在寻找的特定URL模式。

我知道对此的支持甚至是不完整的,但现在它只能用作Chrome扩展程序(很快就会推出Firefox,所以我不得不修补它),所以它现在应该没问题

如果有其他问题,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在发生链接操作时捕获它。您正在寻找的模式是什么?这只是“选择”正确<a>的问题。 jQuery在任何场合都有selectors属性,“以...开头”,“以...结尾”,“包含”,“等于”等等......

$('a[href="http://notHere.com"]').on('click',function(event){
    alert("omg don't go there!");
    //window.location="http://www.goHere.com";
    event.preventDefault();
});

jsFiddle

根据评论:

如果您的页面将动态更改,您需要将事件绑定委派给肯定会始终存在的内容,并包含您的目标。

$('body').on('click','a[href="http://notHere.com"]',function(event){
    alert("omg don't go there!");
    //window.location="http://www.goHere.com";
    event.preventDefault();
});

这会将点击处理程序放在<body>上,并从那里监视相应锚点的点击次数。如果你可以靠近,那就去吧,例如:$('#mainContent')