Ruby on rails 删除重新生成HTML时丢失的链接行为。我该怎么办?
如果我在页面上重新生成Rails delete链接,如下所示:Ruby on rails 删除重新生成HTML时丢失的链接行为。我该怎么办?,ruby-on-rails,Ruby On Rails,如果我在页面上重新生成Rails delete链接,如下所示: <a href="/categories/19" data-method="delete" data-confirm="Are you sure?" ..>Link</a> 加载此页面时,Rails中的某些内容必须设置此链接的行为,因为在我承诺删除某些内容之前,我会得到一个很好的“确定吗?”。然而,当我重新生成HTML时,我猜我需要重新初始化行为,但我不确定这是从哪里来的。有谁能告诉我,在生成这个HTM
<a href="/categories/19" data-method="delete" data-confirm="Are you sure?" ..>Link</a>
加载此页面时,Rails中的某些内容必须设置此链接的行为,因为在我承诺删除某些内容之前,我会得到一个很好的“确定吗?”。然而,当我重新生成HTML时,我猜我需要重新初始化行为,但我不确定这是从哪里来的。有谁能告诉我,在生成这个HTML链接后,是否有一个函数需要再次调用?谢谢如果您的意思是“确定吗?”弹出消息在重新加载页面后无法工作,则问题可能在于TurboLink。看一看,看看如何使用一个)。禁用单个链接的TurboLink;b) 。对整个HTML文档禁用它;或c)。将其完全从Rails项目中删除(可能没有明显的影响)。我怀疑您的问题在于用于设置链接的javascript。事件的顺序是这样的:
或者,您可以将代码设置为接受一个作为选择器的参数,并且它仅将onclick事件应用于带有选择器的*元素中的元素**。因此,当您在dom ready中调用它时,您将传递“body”,稍后再调用时,您将传递“#正在加载的新div的id”或类似的内容。您可以这样做,这将仅关闭此特定URL的TurboLink
<span data-no-turbolink><a href="/categories/19" data-method="delete" data-confirm="Are you sure?" ..>Link</a></span>
您到底有什么问题?当我重新生成HTML链接时,JavaScript链接行为将丢失。例如,当我有一个删除链接(带有data method=“delete”和data confirm=“you sure?”)时,它通过显示删除确认来处理它。当生成新的HTML时,这将丢失。我理解为什么会发生这种情况,但我不知道如何修复它,从而可以重新应用原始链接行为(显示协同信息框)以及turbolinks,主要目的是在当前维护状态下加载页面。我希望链接的行为与重建前一样。我明白了,这是在TurboLink中。事实上,我想保持这种行为。我想将链接行为重新应用到以后生成的HTML。我是否可以在turbolinks中调用一些东西,将行为重新应用于链接?我不需要担心将行为重新添加到链接中,因为我完全替换了所有有问题的链接。当你说“保持行为”时,你的意思是保持弹出消息正常工作,还是你对重新加载页面后弹出消息不工作感到满意?如果是前者,请看一看。除非您想沉浸在JavaScript中,否则最好的做法可能是将数据no turbolink
添加到链接中。我想保留turbolinks,但我想将弹出消息click events重新绑定到新生成的链接。我已经查看了turbolinks.js文件,但似乎没有任何方法可以通过封装的闭包调用函数。因此,如果要生成链接,我似乎不能使用TurboLink删除链接行为。实际上,该功能似乎与TurboLink无关。我已经禁用了它,无法理解为什么确认仍然出现。该功能存在于jquery_ujs文件中,它创建了一个带有大量方法的$.rails对象,但我无法从中看出如何在删除之前重新分配确认消息。Turbolinks与出现的确认框无关,后者由JavaScript处理。问题是Turbolinks阻止JavaScript在页面重新加载后启动,这就是为什么在随后的单击中看不到确认弹出窗口的原因。为此链接、页面或整个项目禁用Turbolinks将确保JavaScript(此处为确认框)始终正常工作。Turbolinks的目的是在用户浏览您的站点时加速页面加载,但性能提升可能很小,而对JavaScript的干扰是一个真正的麻烦。