JavaScript 生成的元素不起作用 - jQuery

标签 javascript jquery

我有一个如下表;

<table id="mytable">
    <tr>
        <td>cola1</td>
        <td>cola2</td>
        <td>cola3</td>
        <td class="rem">cola4</td>
    </tr>
    <tr>
        <td>colb1</td>
        <td>colb2</td>
        <td>colb3</td>
        <td class="rem">colb4</td>
    </tr>
</table>

<button id="but">Add Row</button>

一个按钮<button id="but">mybutton</button>放置在表格底部,单击该表格即可向表格添加新行。最后一列行的类别为 rem ,它具有单击时删除父行的功能。

这是 JavaScript

$(document).ready(function() {
    $('#but').click(function() {
        row = $("<tr></tr>");
        col1 = $('<td>colex1</td>');
        col2 = $('<td>colex2</td>');
        col3 = $('<td>colex3</td>');
        col4 = $('<td class="rem">colex4</td>');
        row.append(col1,col2,col3,col4).prependTo("#mytable");
    });

    $('.rem').click(function() {
        var $button = $(this);
        var $row = $button.closest('tr');
        $row.fadeOut('slow');
    });
});

该函数在上面两行中运行良好。但删除按钮在 jQuery 添加的行中不起作用。如何使 Javascript 添加的行像其他行一样工作?

<强> Here 是 fiddle 。

最佳答案

您需要使用委托(delegate)事件处理程序,使用 on() ,如果您希望它应用于新创建的元素。其工作方式是将处理程序添加到已经(并将继续)存在于 DOM 中的元素,然后在处理程序中,当事件冒泡时,它会检查事件目标是否与提供给 on() 的选择器匹配。功能。如果是这样,那么它会运行处理程序,否则不会。

$('#mytable').on('click','.rem',function() {
  var $button = $(this);
  var $row = $button.closest('tr');
  $row.fadeOut('slow');
});

关于JavaScript 生成的元素不起作用 - jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9658480/

相关文章:

javascript - jquery插件,引用DOM中的视频元素

javascript - jquery ".prop()"在附加到正文之前不起作用

javascript - Jqgrid在寻呼机中隐藏按钮分隔符

jquery - 图像 slider 在 ajax 加载的内容中不起作用

javascript - Thymeleaf 模板中 HashMap 的级联下拉列表

javascript - 如何选择一个网格而不是在 BabylonJS 中单击的所有网格

jquery - 网页开发 - 整个 "scalable"网站没有 flash,可能吗?

javascript - 通过 Javascript 添加 CSS 类后查找图像的宽度

javascript - 选择带有 json 的 js 不起作用

javascript - 简单的 onclick 不提交