Silverstripe中的Ajax模板和内部链接

Silverstripe中的Ajax模板和内部链接,ajax,jquery,load,silverstripe,Ajax,Jquery,Load,Silverstripe,我最近发布了一个问题,关于如何在SilverStripe 3中使用Ajax加载新页面,而当用户单击菜单项时,背景图像(取决于侧面)会像幻灯片一样发生变化。可以在此处找到问题和有用的答案: 我已经按照上一篇文章中的建议建立了网站,一切似乎都很好,除了一件事: 当我单击Ajax模板中的链接时,页面以正常方式加载,而不是按需要通过Ajax加载。(例如,当我有一个博客或团队结构,如本文所述时会发生这种情况:或者当一个页面链接到我的网站的另一个页面时)是否有可能以某种方式改变这种情况?我希望总是通过Aja

我最近发布了一个问题,关于如何在SilverStripe 3中使用Ajax加载新页面,而当用户单击菜单项时,背景图像(取决于侧面)会像幻灯片一样发生变化。可以在此处找到问题和有用的答案:

我已经按照上一篇文章中的建议建立了网站,一切似乎都很好,除了一件事:

当我单击Ajax模板中的链接时,页面以正常方式加载,而不是按需要通过Ajax加载。(例如,当我有一个博客或团队结构,如本文所述时会发生这种情况:或者当一个页面链接到我的网站的另一个页面时)是否有可能以某种方式改变这种情况?我希望总是通过Ajax加载页面。这可能吗


任何帮助都将不胜感激

我猜您正在通过以下方式向链接添加单击处理程序:

但是,当您通过ajax加载新的html时,单击事件不会被绑定(因为已经发生了这种情况)

您可能希望在此处使用事件委派:

$('body').on('click', 'a', function(){...});

这样,事件总是被触发,因为它总是冒着气泡到达身体。

太好了!谢谢现在,我需要排除外部链接和在新窗口中打开的链接…我读了一些关于它的内容..如何做,但不幸的是再也找不到链接:/你可以简单地向锚定标记添加一个类来标识链接类型,并使用“a.external”或类似方法选择它们?我只是尝试:$('body')。on('click',a:not([target=“\u blank”]),函数(e){…});现在似乎像预期的那样工作……耶!:)
$('body').on('click', 'a', function(){...});