功能单击数据表中的按钮

时间:2017-12-24 23:49:14

标签: javascript jquery datatables

我正在加载一个包含DataTables的表。在每一行中,我创建了一个单击按钮,该值自动插入到开启窗口的输入中。我使用的功能是:

$("button").click(function() {
      var id = $(this).val();
      window.opener.document.getElementById('cliente-nombre').value = id;
      window.parent.close();
});

该功能不适用于数据表中加载的按钮。如果我创建一个加载页面的按钮(不是在页面完全加载时),它的工作没有问题。

我认为这不起作用,因为它们是在页面完全加载时创建的,

2 个答案:

答案 0 :(得分:0)

尝试将其包裹在$(document).ready中。这将在运行代码之前等待页面加载。

$(document).ready(function() {
    $("button").click(function() {
          var id = $(this).val();
          window.opener.document.getElementById('cliente-nombre').value = id;
          window.parent.close();
    });
});

这样,在附加点击处理程序之前,您的按钮将位于DOM上。

答案 1 :(得分:0)

在处理页面加载后加载的元素时,通过on()将事件处理程序委托给父元素,以确保它们响应点击。

  

委派活动的优势在于他们可以处理来自的活动   稍后添加到文档中的后代元素。通过   选择一个保证在当时存在的元素   委托事件处理程序附加,您可以使用委托事件   避免频繁附加和删除事件处理程序的需要。这个   element可以是a中视图的容器元素   例如,模型 - 视图 - 控制器设计,或者如果事件是文档   handler希望监视文档中的所有冒泡事件。该   文档元素在之前的文档头部中可用   加载任何其他HTML,因此可以安全地在那里附加事件   等待文件准备好。

我在这里使用document对象:

$(document).on('click', 'button', function() {
  var id = $(this).val();
  window.opener.document.getElementById('cliente-nombre').value = id;
  window.parent.close();
});