jQuery我的输入不适用于新的被调用元素

时间:2015-08-23 00:12:45

标签: javascript jquery jquery-plugins haml jquery-events

当jQuery生成新字段时,新字段无法使用'输入'。

这是我的剧本:

咖啡

$('.teaser-form').keyup (e) ->
  if e.keyCode == 13
    $('.add-new-list').click()

form.haml

= f.simple_fields_for :products do |p|
  = render 'product_fields', :f => p 
.gear-item-add
  = link_to_add_association 'add item', f, :gears, class: "btn btn-default add-new-list"

所以jQuery调用link_to_add_association按钮创建下面显示的字段。 (第一个字段是初始字段,所以如果按下回车键,则会产生第二个字段和第三个字段...但如果我尝试继续第三个字段并按回车键,则不会发生任何事情)

_product_field.haml

.nested-fields.gear-patrol
  .col-md-12
    = f.text_field :list, class: 'teaser-form form-control', placeholder: 'testing'

enter image description here

3 个答案:

答案 0 :(得分:5)

当您在寻找CoffeeScript和haml时,请在您的代码中尝试:

$(document).on 'keyup', '.teaser-form', (e) ->
  if e.keyCode == 13
    $('.add-new-list').click()
  return

这就是@nnnnnn带来的有关this question的代码的处理方式

答案 1 :(得分:0)

将事件处理程序添加到新创建的元素

重新执行此代码。

$('.teaser-form').keyup (e) ->
  if e.keyCode == 13
    $('.add-new-list').click()

或者仅将处理程序添加到新创建的元素中。

答案 2 :(得分:0)

当您将处理程序绑定到类时,它会查找具有该类的所有现有对象并绑定逻辑 - 因此新创建的对象将不具有处理程序,无论它们是否具有班级。这是maazzaa's point