我尝试对通过优秀的SyntaxHighlighter项目添加到DOM的内容进行后处理。
当SH格式化文本时,它会生成一堆HTML,然后将这些HTML写入DOM。它用类"syntaxhighlighter"创建了一个div。
我想监听这些新div的插入,当它们插入时,我想操作一些html,然后用这个新html覆盖DOM中的html。
我的问题是,当我将这个新的html写回到DOM时,它会重新触发最初触发我的处理程序的事件,因此我陷入了浏览器杀手递归。
以下是我目前掌握的情况:
$('div.syntaxhighlighter').live('DOMNodeInserted', function(event){
//console.log(event);
var input = event.target.innerHTML;
var newInput = input.replace(/(dbo\..*?)(\(|\s)/ig,"<a href='?obj=$1'>$1</a>$2");
$(event.target).unbind();
event.stopPropagation();
$(event.target).html(newInput);
return false;
});
无论是unbind、stopPropagation
还是return false都不会得到我想要的行为。我想我明白为什么,但我不知道如何阻止它(我担心我的jQuery-foo很弱)
2条答案
按热度按时间j13ufse21#
你能不能...
ryevplcw2#
您是否尝试将delegate(插入DOM元素所需)与one方法的,
毕竟one方法是专门为防止任何东西多次触发而创建的?