无法取消绑定.modal.data-api事件

时间:2013-06-05 10:29:48

标签: twitter-bootstrap jquery

我一直在努力研究如何在使用Twitter Bootstrap时从模态对话框中删除data-api。我正在使用当前版本(版本2.3.2)并尝试了以下所有内容:

只删除body(如文档所述)和document上的模态数据api(因为这是事件实际上看起来被绑定的地方),事件仍然发生。

$("body").off(".modal.data-api");

$(document).off(".modal.data-api");

然后我想我会尝试删除整个数据api(在正文和文档上),但都没有再次工作。

$("body").off(".data-api");

$(document).off(".data-api");

此外,我已尝试在上述每一项中指定选择器[data-toggle="modal"],但无济于事。

我们将非常感激地收到任何建议。

更新

似乎是因为在https://github.com/jschr/bootstrap-modal/blob/master/js/bootstrap-modal.js中事件绑定在传递给jQuery的函数中:

$(function () {
    $(document).off('click.modal').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
        var $this = $(this),
            href = $this.attr('href'),
            $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))), //strip for ie7
            option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data());

        e.preventDefault();
        $target
            .modal(option)
            .one('hide', function () {
                $this.focus();
            })
    });
});

如果我删除$(function () {和相应的});,则可以取消绑定事件。那么,现在的问题是,为什么在那个包装器出现的时候不能解开这些事件呢?

分辨率

我没有将$(function() { ... });视为$(document).ready的简写,特别是.off.on甚至没有必要时。因此,在插件删除该代码之前,我发现以下内容将完成这项工作:

$(function() {
    $(document).off(".modal.data-api");
});

0 个答案:

没有答案