在Django管理添加页面,使用TabularInline
当它有一个锚Add another Poll
它的HTML看起来像Django的管理员formset:如何使用jQuery添加一个新的formset行?
<a href="javascript:void(0)">Add another Poll</a>
现在我想添加一个新行,就像使用鼠标点击的锚,在文件输入变化事件被触发:
$('input:file').change(function(e){
//... do something ...
var rows = "#poll_set-group .tabular.inline-related tbody tr";
var addbtn = $(rows).parent().find("tr:last a")
addbtn.click(); // try to add a new row but doesn't work
});
元素选择正确,但click()不起作用。我也试过addbtn.trigger('click')
,虽然它几乎做同样的事情,仍然无法正常工作。
当我跟踪到了Django的inline.js可以看到绑定的功能
inline.js
(function($) {
$.fn.formset = function(opts) {
///...
if ($(this).length && showAddButton) {
var addButton;
if ($(this).attr("tagName") == "TR") {
//...
addButton = $(this).parent().find("tr:last a");
} else {
//...
addButton = $(this).filter(":last").next().find("a");
}
addButton.click(function() {
//...
});
}
}
})(django.jQuery);
谁能告诉我为什么.click()
不起作用? 或其他建议做同样的事情?
我没有找到'addbtn.click()'的代码(你正在调用这个函数但没有执行)你有没有想要发布的东西? – kartheek 2013-02-21 07:59:20
我认为在文档准备好之后,click()实现已经绑定到'addButton.click(...',当调用'$(rows).formset(...)'时,我所要做的就是触发click事件。我的想象力错了吗? – jcjason 2013-02-21 08:21:38