【问题标题】:order to load code in javascript为了在 javascript 中加载代码
【发布时间】:2013-09-19 17:02:21
【问题描述】:

我有下一个代码

$(document).ready(function () 
{
    $("a").on('click',function()
    {
      console.log("foo");
    });

和这段代码,从数据库生成一行,并将数据放在 tbody 上

$.getJSON('file.php', function(data) {
    $.each(data, function (index) {
            $('#my_table > tbody').append(''
                        +"<tr id= "+data[index].id_marca_c+">"
                         +"<td>"
                           +"<a href='#'><i class='icon-pencil'></i></a> "
                         +'</td>'
                        +'</tr>');
        });

但在函数中点击链接不适用于为 javascript 生成的表格,但如果在 html 代码中。

示例:

<html>
 <!-- /code -->
  <a href='#'><i class='icon-pencil'></i></a>  <!-- /this-works -->
</html>

但在为 javascript 生成的表中,该函数不起作用。 我修改了生成的代码,没问题。

编辑: javascript代码http://pastebin.com/2GZ4J28Q

【问题讨论】:

  • @Rogue Click 事件未添加到动态创建的元素中。

标签: javascript jquery events row


【解决方案1】:

您需要使用委托事件将事件与绑定时不存在并动态添加的元素绑定。您可以将事件委托给动态添加的元素或文档的父级。

$("#my_table").on('click',"a" ,function()
{
  console.log("foo");
});

委托事件的优势在于它们可以处理来自 以后添加到文档中的后代元素。经过 选择一个保证在该时间存在的元素 附加了委托事件处理程序,您可以使用委托事件 避免频繁附加和删除事件处理程序的需要,reference

【讨论】:

  • 如果是$("#my_table &gt; tbody").on('click',"a",...就更好了 你的回答$(document)...会应用到整个页面的每个链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 2016-12-29
  • 2014-03-16
  • 2011-08-21
  • 2017-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多