2

Twitter の bootstrap.js プラグイン内のモーダル コードについては、次のように表示されます。

e = $.Event('show')
this.$element.trigger(e)

なぜ彼らはただしないの$.element.show()ですか?

jQuery Event コンストラクターが使用されているのはなぜですか?

ソースからの show メソッドは次のとおりです。

show: function () {
   var that = this
      , e = $.Event('show')

    this.$element.trigger(e)

    if (this.isShown || e.isDefaultPrevented()) return

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

    this.isShown = true

    escape.call(this)
    backdrop.call(this, function () {
      var transition = $.support.transition && that.$element.hasClass('fade')

      if (!that.$element.parent().length) {
        that.$element.appendTo(document.body) //don't move modals dom position
      }

      that.$element.show()

      if (transition) {
         that.$element[0].offsetWidth // force reflow
      }

      that.$element.addClass('in')

      transition ?
        that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
        that.$element.trigger('shown')

    })
  }

誰かが私にこれを明確に説明できますか?

4

1 に答える 1

1

それは、イベントに反応する機会を与えてくれるからです。

このおかげで、モーダルが開くときに反応したい場合は、イベントリスナーのみを追加する必要があります:

$("#myModal").on("show", function () {
    console.log("Do stuff on 'show'");
});

ただ明確にします。彼らは「show」というイベントを作成しましたが、そのプラグインでのみ使用されるため、任意の名前にすることができます。彼らが「showme-the-money」と呼んだとしても、あなたはそのイベントだけを聞くべきです:

$("#myModal").on("showme-the-money", function () {
    console.log("Sorry i'm poor :(");
});
于 2012-08-25T19:38:51.453 に答える