鍍金池/ 問(wèn)答/HTML/ bootstrap源碼中data()函數(shù)參數(shù)是什么意思?

bootstrap源碼中data()函數(shù)參數(shù)是什么意思?

最近在看bt的源碼,發(fā)現(xiàn)里面很多都加了命名空間,data函數(shù)我不是很理解,如下代碼(modal.js)

function Plugin(option, _relatedTarget) {
    return this.each(function () {
      var $this   = $(this)
      var data    = $this.data('bs.modal')
      console.log($this.data())
      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
      if (typeof option == 'string') data[option](_relatedTarget)
      else if (options.show) data.show(_relatedTarget)
    })
  }

$this.data('bs.modal')的值一開(kāi)始是為空的,后面$this.data('bs.modal', (data = new Modal(this, options)))給它賦值,賦給誰(shuí)了?我看頁(yè)面上也沒(méi)這個(gè)值啊

回答
編輯回答
柚稚

$this.data()這個(gè)本身是 jQuery 一個(gè)緩存數(shù)據(jù)的方法,可以把數(shù)據(jù)附加到 dom 上。

第一次調(diào)用 modal,初始化時(shí),傳入的 option 是配置,沒(méi)有 modal 實(shí)例,所以 new 了一個(gè)放進(jìn)$this.data('bs.modal'),這里面保存的就是這個(gè) modal 實(shí)例。

之后再調(diào)用 modal,傳入的 option 就是方法名了,就直接從$this.data('bs.modal')取出實(shí)例,然后data[option]調(diào)用方法。

2017年2月28日 14:04