javascript - Rails Turbolinks 破坏 pnotify

标签 javascript jquery ruby-on-rails turbolinks pnotify

在我的 Rails 应用程序中,我拥有它,以便当您从列表中投票、订阅或取消订阅时,它将使用 pnotify 显示一个弹出窗口。

这工作正常,直到用户导航到不同的页面,现在它不再工作。仅当加载或重新加载页面时才有效。

我知道这是因为 Rails 4 应用程序中的 Turbolinks,但它似乎执行了除 pnotify 之外的所有其他 JavaScript 代码。

其他信息..

订阅/取消订阅和投票按钮具有方法 post 并远程执行,这意味着我有一个单独的文件名 subscribe.js.erb、unsubscribe.js.erb 和 vote.js.erb 来处理 javascript 的执行当用户单击按钮时编写代码。

这是我如何创建新的 pnotify 对象的示例:

new PNotify({
    title:  "Subscribed!",
    text: "<%= @message %>",
    type: 'info',
    opacity: .8,
    animation: {
        effect_in: 'show',
        effect_out: 'slide'
    },
    buttons: {
        sticker: false
    }
}).get().click(function() {
            $(this).remove();
        });

我还使用名为 gem 'pnotify-rails' 的 gem 进行 pnotify

最佳答案

我也遇到了同样的问题,但这是因为 PNotify 丢失了其 context ,正如您在该行中看到的那样,插件将上下文指定为 $('body'),但是当您使用 Turbolink 导航时,正文会被替换,因此上下文会丢失。

你需要做什么?

您需要在turbolink的事件“page:load”中分配上下文

$(document).on('page:load',function(){
	PNotify.prototype.options.stack  = {
		dir1: "down",
		dir2: "left",
		push: "bottom",
		spacing1: 25,
		spacing2: 25,
		context: $("body")
    }
        
});

关于javascript - Rails Turbolinks 破坏 pnotify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28078480/

相关文章:

ruby-on-rails - 为什么我要获取表单时,form_tag方法是帖子?

javascript - Meteor客户端证书自动登录

ruby-on-rails - json-1.7.3 的 Ruby 包安装错误

javascript - "i"JavaScript for 循环中的值在 jquery 函数中未被识别

jquery - 是否可以使用jquery获取跨域SOAP请求

jquery - JavaScript : jQuery Datepicker - simple highlighting of specific days, 谁能帮忙? (来源内)

jquery - 使用 jquery 获取具有分配的多个类的元素的类值

html - 无法使用 css 加载背景图像

c# - 从 C# 到 javascript 的字符串数组示例不起作用

javascript - 如何在从数据库存储和检索时将 datetime-local 转换为 datetime