Bootstrap模态选项

时间:2014-11-21 13:18:19

标签: jquery twitter-bootstrap modal-dialog

我正在阅读bootstrap的modal.js,其中有这样的片段:

  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
    var $this   = $(this)
    var href    = $this.attr('href')
    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())

    if ($this.is('a')) e.preventDefault()

    $target.one('show.bs.modal', function (showEvent) {
      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
      $target.one('hidden.bs.modal', function () {
        $this.is(':visible') && $this.trigger('focus')
      })
    })
    Plugin.call($target, option, this)
  })

}(jQuery);

任何人都知道此行var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())的含义,尤其是此部分remote: !/#/.test(href) && href

1 个答案:

答案 0 :(得分:1)

  • /#/是一个搜索哈希值的正则表达式。
  • 如果href包含哈希值,则
  • /#/.test(href)会返回true
  • !/#/.test(href)反转结果;如果href不包含哈希值,则为真。
  • !/#/.test(href) && href是一个布尔AND hack。如果左侧是href,它将返回true;否则它将返回false

因此,如果href包含哈希值,则输出:

{ remote: false }

如果href不包含哈希值,则输出:

{ remote: href  }