首页 > 解决方案 > jquery 掩码仅在加载 ajax 内容后工作一次

问题描述

一些内容由 ajax 显示,在 div 中呈现为当用户点击外部时关闭的灯箱(此时此内容被删除):

每次用户点击目标 div 时,都会有一些内容进入这个控制器:

控制器:

def ajax_load
  // some code
end

最后从控制器调用这个 js 函数:

ajax_load.js.erb

<% if @variable %> // embedded variable
  $(target_div).html("<%= j render 'path' %>");

  $('.some_div').on('click', '#target_element', function(e) {
    e.preventDefault();
    $("input#element_0").mask("00/00"); // works only once
    $("#element_1").prop('checked','checked'); // works
    $("#element_2").show(); // works       
  });

<% end %>

在这个灯箱内,我有一些输入,并且调用了这个 jquery 掩码函数,当我在页面上打开这个元素一次时它确实有效,但是如果关闭灯箱并再次调用它,它就不再存在了,其他行单击功能继续工作,例如“跳跃”遮罩功能。

如果我尝试让这个掩码在它停止工作后直接从浏览器控制台工作,它不会改变。

Obs:我还在浏览器控制台上做了一些测试:

在上面的代码行已经从 js 文件中加载之后,让它在浏览器控制台上工作的唯一方法是从 jquery 路径中改变一点:

$(".previous_div input#element_0").mask("00/00");

为了让它再次工作,我们需要做更多的改变:

$("body .previous_div input#element_0").mask("00/00");

标签: javascriptruby-on-rails

解决方案


我有同样的问题,但是从检索的 ajax 添加了这个脚本,它对我有用

<script> 
   $('input[name="txt-tel"]').mask('(000)-000-0000');
   $('input[name="txt-dni"]').mask('#');
</script>

推荐阅读