javascript - 在每个元素的基础上修改 X 可编辑模板(不是全局)

标签 javascript jquery twitter-bootstrap-3 x-editable

我在 X-editable 中添加了一个删除按钮使用以下脚本 ( live demo ) 形成表单。

如何仅对某些元素(即 .editable-with-delete)而不是全局实现这一点?

enter image description here

$('.editable').editable();

$.fn.editableform.buttons += '<button type="button" class="btn btn-default btn-sm editable-delete"><i class="glyphicon glyphicon-trash"></i></button>';

$('.editable-with-delete').editable();


$("#list").on("click", "i.glyphicon-trash", function() {
  console.log('delete')
});

<h4>X-editable: display checklist as UL</h4>
<ul id='list'>
  <li class='editable-with-delete'>Editable element with delete</li>
  <li class='editable'>Editable element without delete</li>
  <li class='editable'>Editable element without delete</li>
</ul>

最佳答案

使用 X-editable 库当前提供的功能,我看不出有一种方法可以通过为您的可编辑对象设置选项来完成您想做的事情。

但是,您可以通过监听 shown 事件并在事件处理程序中添加按钮来实现。这是一个例子:

$('.editable').editable();

$(".editable-with-delete")
  .on("shown", function(ev, editable) {
    const buttons = editable.container.$form.find(".editable-buttons")[0];
    buttons.insertAdjacentHTML("beforeend", '<button type="button" class="btn btn-default btn-sm editable-delete"><i class="glyphicon glyphicon-trash"></i></button>')
  })
  .editable();

$("#list").on("click", ".editable-delete", function() {
  console.log('delete')
});

理想情况下,在我自己的应用程序中,我更愿意在显示弹出窗口之前添加按钮,但我没有看到使用库的公共(public) API 执行此操作的方法,因为它现在已经存在。无论如何,随着最近浏览器执行的回流优化,我怀疑在 shown 处理程序中添加按钮是否会明显影响用户体验。

这是一个修改过的 fiddle :https://jsfiddle.net/kuqjtdar/3/

关于javascript - 在每个元素的基础上修改 X 可编辑模板(不是全局),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55676195/

相关文章:

javascript - 如何避免在子列表中调用回调函数

html - 按钮和 Dash 未对齐

Javascript - 处理大数组时的内存问题

javascript - 如何以编程方式更改 Firefox 代理设置?

javascript - 创建一个常量而不是变量来移动位置

ASP.NET MVC 5 和 Bootstrap 3

css - Bootstrap 3 列仅在纵向 View 中换行

javascript - 将 *<BR> 替换为 <li>

javascript - 为什么正则表达式构造函数不起作用?

javascript - 是否可以使用 JavaScript 获取 SVG 图像的 XML?