0

我建立了一个表,允许用户添加和删除行。我希望能够使用他们输入到这些行中的信息来进行计算,但似乎无法访问此信息,因为它已被动态添加到页面中。

这是我的添加和删除功能:

$("a.deleteRow").live('click', function (){
    $(this).parent().parent().remove();
});

$("a.addRow").live('click', function (){
    $("table.moneyTable tr:last").prev('tr').before("<tr>[Long row formatting]</tr>");
});

我在页面上还有其他一些动态内容,例如依赖于选择框的各种文本输入框,这些都应该可以访问。不过,他们没有响应我的 jQuery。想法?

4

2 回答 2

4

嗯......当前版本的 jQuery 中的委托是使用.on()函数执行的。我们将事件委托给静态父对象;document如下所示。

$(document).on('click', 'a.deleteRow', function(){
  $(this).parent().parent().remove();
});

$(document).on('click', 'a.addRow', function(){
  $("table.moneyTable tr:last").prev('tr').before("<tr>[Long row formatting]</tr>");
});
于 2012-08-20T01:33:27.027 回答
2

请试试这个:1.7..以上

接口:.on http ://api.jquery.com/on/

此外,如果您想知道原因:jQuery live 方法有什么问题?

delegate等。人。jquery绑定事件到动态加载的html元素

<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>

希望它适合您的原因:),下面的帖子中也没有提到另一个好的版本,document因此我不会在这里更新它!

$("a.deleteRow").on('click', function (){
    $(this).parent().parent().remove();
});

$("a.addRow").on('click', function (){
    $("table.moneyTable tr:last").prev('tr').before("<tr>[Long row formatting]</tr>");
});
于 2012-08-20T01:33:05.657 回答