如何在页面更新时执行jquery

时间:2013-06-05 11:48:47

标签: javascript jquery python html django

我已经使用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

2 个答案:

答案 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"更好的选择器,因为你只需要区分刚刚动态添加的元素,而不是那些已经用插件初始化的元素。