我已经使用jquery multi-select以用户友好的方式呈现我的django app muslitiselect。当My Page First渲染时,我在页面下面给出了下面给出的脚本,这个脚本将任何具有类multiselect的元素绑定到jquery multiselect。
$(function() {
$(".multiselect").multiselect();
}
);
现在我渲染了几个div,当用户点击编辑页面时,查询使用有界形式渲染这些div。
function inline_modal_form(href, data) {
url = '.';
modal_link = '#' + String(href);
$(modal_link).load(url, data);
}
现在,当呈现的新表单具有类multiselect的元素时,却无法使用jquery multiselect进行绑定。我的页面更新时如何执行此脚本。
我搜索了像.on(以前的.live,.delegate)这样的方法,但是无法理解如何执行我的脚本。
Jquery 1.8
答案 0 :(得分:3)
没有插件委派,委托是用于事件绑定。
在您的情况下,您应该使用加载回调函数:
function inline_modal_form(href, data) {
url = '.';
modal_link = '#' + String(href);
$(modal_link).load(url, data, function () {
$(modal_link).find('.multiselect').multiselect();
});
}
答案 1 :(得分:1)
不是直接在根代码中调用插件,而是将其包装在函数中并调用:
var bindMultiselects = function () {
$(".multiselect").multiselect();
};
$(function() {
bindMultiselects();
// any other page load code, etc.
});
然后,当您加载新内容时,再次调用该函数:
function inline_modal_form(href, data) {
url = '.';
modal_link = '#' + String(href);
$(modal_link).load(url, data, bindMultiselects);
}
当然,这只有在初始化插件的行为在被调用两次时没有副作用时才有效。 不应该,但我无法确定。如果是这种情况,那么你需要一个比".multiselect"
更好的选择器,因为你只需要区分刚刚动态添加的元素,而不是那些已经用插件初始化的元素。