我有一个包含一些 Javascript / jQuery 内容的页面,例如:
(function()
{
$('.tip').tooltip();
$('.test').click(function()
{
alert('Clicked!')
});
}();
在页面上,我使用 jQuery 插入了一些 HTML,因此 DOM 发生了变化。例如,我插入了一个带有“tip”或“test”类的额外元素。刚刚插入的新元素不起作用,因为 jQuery 正在使用未操作的 DOM,而刚刚插入的元素不存在。因此,我四处搜索并找到了“点击”的解决方案:
$('body').on('click','.click',function()
{
alert('Clicked!')
});
我不明白为什么,但是这样它就可以使用被操纵的 DOM,而 jQuery 的东西可以在新插入的元素上工作。所以我的第一个问题是,为什么这行得通而只是 click() 函数不行?而第二个问题,为什么我必须指向“身体”?
最后,我的第三个问题是,如何使用工具提示完成这项工作?
我知道有很多关于这个主题的信息(之前我读过的 delegate() 和 live() 函数),但我找不到关于它的解释。而且我无法用我找到的信息解决我的第三个问题。
我期待着您的回复!
额外的问题:
4)是否建议在这种情况下始终指向“身体”?它总是在那里,但可能存在性能问题?