我认为问题在于,Chosen 插件会转换该容器内带有"#fayls"
ID 的元素。考虑一下:
HTML:
<div id="something"></div>
<div id="completely_different"></div>
<button id="change_something" type="button">Change!</button>
JS:
$('#change_something').click(function() {
$('#something').append($('<p>Internal P</p>'));
});
$('#something').bind("DOMNodeInserted", function(event) {
alert(event.target);
$("#completely_different").append($('<p>SOme p</p>'));
});
JS小提琴
它按预期工作(每次单击按钮都会将一个<p>
元素添加到两个 div 中)。
现在让我们稍微改变一下我们的 HTML:
<div id="something">
<div id="completely_different"></div>
</div>
<button id="change_something" type="button">Change!</button>
JS小提琴
...现在该事件将无限期地触发 - 因为当我们更新内部 div 时,DOMNodeInserted 仍然会冒泡到外部。
另请注意,DOMNodeInserted 事件现在被认为已弃用(但在 IE9 中它的支持仍然存在缺陷,如此处所述)。