更改指定bootstrap“modal-open”类而不是body的位置

时间:2014-10-13 08:38:03

标签: twitter-bootstrap

目前

modal-open
打开模态时,

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:8)

您必须更改添加模态打开的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上):

in

 Modal.prototype.show
你会找到

this.$body.addClass('modal-open')
Modal.prototype.hide中的

你会找到

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

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