初始页面加载后没有添加jQuery元素的onclick事件

初始页面加载后没有添加jQuery元素的onclick事件,jquery,ruby-on-rails,nested-forms,Jquery,Ruby On Rails,Nested Forms,在rails应用程序中,我们有一个表,其中每个tbody行都是一个嵌套字段。我想根据当前字段数限制嵌套字段。为了做到这一点,我遵循嵌套的表单文档提供的步骤 为了更好地适应我们的应用程序,我修改了下面的代码 // app/views/users/index.html.haml :javascript $(function() { limitNestedFields('#{@tenant.max_users}'); }) // app/assets/javascripts/limit_nest

在rails应用程序中,我们有一个表,其中每个tbody行都是一个嵌套字段。我想根据当前字段数限制嵌套字段。为了做到这一点,我遵循嵌套的表单文档提供的步骤

为了更好地适应我们的应用程序,我修改了下面的代码

// app/views/users/index.html.haml
:javascript
  $(function() { limitNestedFields('#{@tenant.max_users}'); })

// app/assets/javascripts/limit_nested_fields.js
function limitNestedFields(limitingFactor) {
  var fieldsCount = $('tr.fields').length,
      maxFieldsCount = limitingFactor,
      $addLink = $('.add_nested_fields');
  function toggleAddLink() {
    $addLink.toggle(fieldsCount <= maxFieldsCount)
  }
  $addLink.click(function() {
    console.log("ADDING FIELD");
    if(fieldsCount < limitingFactor){
      fieldsCount += 1;
    }
    toggleAddLink();
  });
  $('.remove_nested_field').click(function() {
    console.log("REMOVING FIELD");
    fieldsCount -= 1;
    toggleAddLink();
  });
  toggleAddLink();
}
//app/views/users/index.html.haml
:javascript
$(function(){limitNestedFields('#{@tenant.max_users}');})
//app/assets/javascripts/limit\u nested\u fields.js
函数limitNestedFields(limitingFactor){
var fieldscont=$('tr.fields')。长度,
maxFieldsCount=限制因子,
$addLink=$('.add_嵌套_字段');
函数toggleAddLink(){
$addLink.toggle(FieldScont尝试更换

$('<selector>').click(function() {
$(“”)。单击(函数(){

$(文档).delegate(“”,'click',function(){
这应该在最初运行此脚本后添加的元素上触发

说明: 当您这样做时。单击可将事件添加到已知的、特定的元素列表中。如果添加新元素,即使它们与该选择器匹配,它们也没有事件

使用.delegate,您将在整个DOM(又名文档)上放置一个事件,并说“当我们得到一次单击时,请查看它是否在该选择器上,如果是,请执行此函数”。因此,由于选择器检查发生在单击之后,因此它包括自单击之后添加的事件


函数.on有一个类似的模式,应该在更现代的jquery版本中使用,而不是委托:

我只需要做一个更改,即使用选择器I.fa.fa-remove,因为该元素是底层链接元素的最高级别部分。您是否可以发布一些文档或推理来解释为什么会这样做呃,我以前的代码?顺便说一句,如果这个答案解决了你的问题,那么请随意将其标记为正确:)我会将其标记为正确。只需将你的解释(注释)添加到答案本身。这非常有帮助,如果有人没有阅读注释,则非常有用。完成,谢谢:关于不在注释中隐藏内容,你是对的:)我已更改“选择…”至“无onclick事件…”
$(document).delegate('<selector>', 'click', function() {