Rails 4/Turbolinks/jQuery:新插入的元素上没有触发keydown事件?

Rails 4/Turbolinks/jQuery:新插入的元素上没有触发keydown事件?,jquery,turbolinks,Jquery,Turbolinks,我在Rails 4上使用jquery turbolinks gem。我有一个链接,单击该链接时,将使用jQuery向DOM添加一个输入字段: $(“.add_color”).html(“”) 但是,my application.js中的jQuery不会为这个新生成的输入触发: $(function() { $('#add_color_text_field').keydown(function(e) { alert("here");

我在Rails 4上使用jquery turbolinks gem。我有一个链接,单击该链接时,将使用jQuery向DOM添加一个输入字段:

$(“.add_color”).html(“”)

但是,my application.js中的jQuery不会为这个新生成的输入触发:

    $(function() {


        $('#add_color_text_field').keydown(function(e) {
            alert("here");
        });

       ...
当我将选择器更改为在初始页面加载时指向一个已经存在的输入字段时,这会起作用,因此我确信它会起作用。要使新生成的DOM元素与TurboLink一起工作,我需要对jQuery进行哪些更改?

您可能需要使用。它易于安装:

档案:

gem 'jquery-turbolinks'
运行
bundle安装
并编辑Javascript清单:

//= require jquery
//= require jquery.turbolinks
//
// ... your other scripts here ...
应该能解决你的问题


请阅读github页面末尾关于绑定到
$(文档)
的说明(不要在
$(函数(){…})
内部绑定,因为这些事件将被执行多次)。

好的,这起作用:
$(文档)。在('keydown','#add_color_text_field',function(){alert(“此处”)})当我从$(function(){…})中取出它时;块那么我应该把jQuery的其余部分放在哪里呢?它们是否都像
$(document).on('event','selector',function(){something})?只需将已绑定到
文档
的文件放在全局函数调用之外。如果您只是将某些内容绑定到一个元素,如
$('#example')。on('submit',function(){…})这可以停留在
$(函数(){…})的内部并应与jquery turbolinks gem.Nice一起使用。因此,您的意思是我必须使用
$(document).on('event','selector',function(){…}).
用于jQuery,目标元素在初始页面加载时不存在?在
$(document)之间有一个区别。
$on('','selector',function(){})
$('selector')。on(''',function(){})
(第一个适用于所有元素,第二个仅适用于初始页面创建时存在的元素)。第一个元素需要放在全局调用结构之外。第二个元素可以留在原地。要使用哪一个取决于您的应用程序,而不是gem或TurboLink。