更改引导程序“modal-open”类的分配位置,而不是主体[关闭]

问题描述 投票:0回答:1

目前

modal-open
当模态打开时,

被分配给主体。我如何更改添加类而不是正文的位置。

感谢您的帮助。

twitter-bootstrap
1个回答
10
投票

你必须更改添加模态打开的js。行为有点奇怪,无论如何你可以温和地或粗暴地做。

轻轻地:拦截模式点击以显示并删除添加到另一个元素的主体类:

// Modal首先添加到body元素中,然后移除并添加到另一个元素中

$('#myModal').on('shown.bs.modal', function (e) {
  $('body').removeClass('modal-open');
  $('#myCustomElement').addClass('modal-open');
})

然后拦截模式的关闭并添加第二次删除的执行:

$('#myModal').on('hidden.bs.modal', function (e) {
   $('#myCustomElement').removeClass('modal-open');
})

残酷的方法,为了避免模态打开,不需要添加到 body 元素中: 进入 TwitterBootstrap 目录 > js 打开modal.js 搜索 modal-open ,你会发现(3.2.0版本):

 Modal.prototype.show

你会发现

this.$body.addClass('modal-open')

Modal.prototype.hide
你会发现

this.$body.removeClass('modal-open')

你必须更改

addClass
removeClass
的目标并替换这些指令,如果你有一个固定元素,那就足够简单了(例如:
$('#myFixedElement').addClass('modal-open')
,如果它是一个动态元素,那就很复杂,你将不得不再次拦截显示函数在js中添加一个
global var
,让
modal.js
知道并读取你的目标元素。但是你也可以更改这些函数的签名,但我真的不建议你这样做,基本上你会做。你的代码太难维护了。

© www.soinside.com 2019 - 2024. All rights reserved.