これを行う方法を見つけましたが、残念ながら、Bootstrap ソースへの変更が必要です。実際のメソッド呼び出しを行うコードは次のとおりです。
$.fn.modal = function (option) {
return this.each(function () {
var $this = $(this)
, data = $this.data('modal')
, options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
if (!data) $this.data('modal', (data = new Modal(this, options)))
if (typeof option == 'string') data[option]()
else if (options.show) data.show()
})
}
これを変更するには、7 行目 (ソース コードの 206 行目) を変更して、最初に外側の関数に渡された追加のパラメーターを渡す必要があります。さらに、jQuery の.each()
関数の反復ごとに、元の引数を指定する必要があります。作業コードは次のとおりです。
$.fn.modal = function (option) {
return this.each(function () {
var $this = $(this)
, data = $this.data('modal')
, options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
if (!data) $this.data('modal', (data = new Modal(this, options)))
if (typeof option == 'string') data[option].apply($this.data('modal'), Array.prototype.slice.call(arguments, 1)); // pass the parameters on
else if (options.show) data.show()
}, arguments) // execute each iteration with the original parameters
}
この変更によって望ましくない副作用が生じないように、まだ実験を続けていますが、今のところ、すべてが期待どおりに機能しています。よりエレガントなソリューションは大歓迎です。