javascript - 如何将 .editable() 应用于动态添加的元素

标签 javascript jquery

我有一个在 $(document).ready() 上执行此 javascript 的网页。 .editable() 来自X-Editable javascript library (就地编辑)。

$('tr td:nth-child(2) a').editable();

我的页面上的链接/按钮允许向表中添加行。有没有办法只对新的执行 editable() 而不是使用与以前相同的选择器并让它再次获取所有匹配项?

$('#newCriteria').click(function () {
    var id = 0;

    // load template
    var cTemplate = $('#criteriaTemplate').html();

    // fill template
    var template = cTemplate.format(id, 'New Field');

    // attach editable (doesnt work)
    $('tr td:nth-child(2) a', template).editable();

    // append to table
    $('#criteriaTable').append(template);
});

如您所见,我想尝试将模板 html 作为上下文传递给 jQuery,但由于在我附加它之前它实际上并不是 DOM 的一部分,因此它不起作用。

另一个可能的解决方案是我可以将选择器修改为 'tr:last-child td:nth-child(2) a'

我想知道是否有一些原因要在元素上使用 .on() 来让 jQuery 自动为我添加处理程序。我过去只使用过 .on() 来添加像 .on('click', '...', function() {}) 这样的处理程序,我不知道是否它可以用于诸如 editable() 之类的事情。

模板:

<script type="text/template" id="criteriaTemplate">
        <tr data-criteriaID='{0}'>
            <td><i class="icon-remove" /></td>
            <td><a href="#">{1}</a></td>
            <td><a href="#" data-value="0">String</a></td>
        </tr>
    </script>

最佳答案

x-editable 有一个 selector 选项,因此您可以将 .editable 应用于表格标签:

$('#table').editable({
  ...
  selector: 'tr td:nth-child(2) a'
});

关于javascript - 如何将 .editable() 应用于动态添加的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15690780/

相关文章:

javascript - 不透明度+随机移动的随机时间

javascript - 是否可以从 HTML 文件中的特定脚本标记引用函数或对象

jquery - 我可以使用 jquery 来改变这些字体的颜色吗?

Javascript循环节点数组获取替代条目

javascript - 从javascript中的文本url读取

javascript - 使用 PageContainer 动态加载面板

javascript - 不断检查时间是否为5 :00 PM jquery

javascript - 防止表单自动提交ajax laravel

javascript - 如何在 Backbone.js 的 Router.routes 中绑定(bind)外部方法

javascript - 如何遍历一组异构元素?