2

我使用 jquery multi-select 以用户友好的方式呈现我的 django 应用程序 muslitiselect。当我的页面第一次渲染时,我在页面上放置了下面给出的脚本,这个脚本将任何具有类多选的元素绑定到 jquery 多选。

$(function() {
      $(".multiselect").multiselect();
     }
);

现在我渲染了几个 div,当用户点击编辑页面 Query 使用有界表单渲染这些 div。

function inline_modal_form(href, data) {
        url = '.';
        modal_link = '#' + String(href);
        $(modal_link).load(url, data);
    }

现在,当呈现的新表单具有具有类多选的元素时,但无法与 jquery 多选绑定。我的页面更新时如何执行此脚本。

我已经搜索了 .on(previously .live, .delegate) 之类的方法,但无法理解如何执行我的脚本。

jQuery 1.8

4

2 回答 2

3

没有插件委托,委托用于事件绑定。

在您的情况下,您应该使用加载回调函数:

function inline_modal_form(href, data) {
    url = '.';
    modal_link = '#' + String(href);
    $(modal_link).load(url, data, function () {
        $(modal_link).find('.multiselect').multiselect();
    });
}
于 2013-06-05T11:52:22.657 回答
1

Instead of calling the plugin directly in the root code, wrap it in a function and call that:

var bindMultiselects = function () {
    $(".multiselect").multiselect();
};

$(function() {
    bindMultiselects();
    // any other page load code, etc.
});

Then, when you load the new content, call that function again:

function inline_modal_form(href, data) {
    url = '.';
    modal_link = '#' + String(href);
    $(modal_link).load(url, data, bindMultiselects);
}

Of course, this only works if the act of initializing the plugin has no side-effects if called twice. It shouldn't, but I can't be certain. If that's the case, then you'll need a better selector than ".multiselect" because you'd need to distinguish only the elements that were just dynamically added, not the ones which have already been initialized with the plugin.

于 2013-06-05T12:15:02.567 回答