添加新 *Inline 时如何在 django admin 中使用 jQuery 绑定事件

Posted

技术标签:

【中文标题】添加新 *Inline 时如何在 django admin 中使用 jQuery 绑定事件【英文标题】:How to bind events with jQuery in django admin when new *Inline is added 【发布时间】:2011-02-19 18:40:14 【问题描述】:

我做了一个绑定一些字段的jQuery函数,但是当我添加一个新的内联时它不起作用。

主要问题是我不知道如何检测 DOM 中的插入并将其绑定到我的函数。

【问题讨论】:

【参考方案1】:

使用livedelegate 函数绑定到表单元素。即使在您插入新的表单元素后它们仍将继续工作,并且您无需每次都重新附加事件处理程序。

相关问题:

Binding dynamically created elements in jQuery Event binding on dynamically created elements? jQuery how to bind onclick event to dynamically added html element adding a new dom element, want to rebind

【讨论】:

也许这个答案需要更新,因为 live 已被弃用【参考方案2】:

上述建议不适用于此特定问题。我会提交一个错误并询问他们是否可以为该链接按钮分配一个 ID,或者以其他方式修复它。

编辑:错误提交https://code.djangoproject.com/ticket/16359

【讨论】:

【参考方案3】:
$('.add-row a').click(my_function)

只要my_function 不包含return false;,它就不会干扰该按钮的现有功能

【讨论】:

我认为 $("selector").live("click",my_function()) 是一个更好的解决方案,你一开始只做一次,不需要其他选择器,它是更简单。 它拒绝绑定到超链接,但它会绑定到.add-row。

以上是关于添加新 *Inline 时如何在 django admin 中使用 jQuery 绑定事件的主要内容,如果未能解决你的问题,请参考以下文章

如何优化在`django-mptt`中添加新节点?

如何向 django-oscar 添加新视图

如何在多对多表中添加列(Django)

使用AngularJS单击添加按钮时如何在表中插入新数据行

Django 嵌套内联 TemplateDoesNotExist

django:在添加新照片时删除以前的照片