我正在阅读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
?
答案 0 :(得分:1)
/#/
是一个搜索哈希值的正则表达式。/#/.test(href)
会返回true
。!/#/.test(href)
反转结果;如果href不包含哈希值,则为真。!/#/.test(href) && href
是一个布尔AND hack。如果左侧是href
,它将返回true
;否则它将返回false
。因此,如果href
包含哈希值,则输出:
{ remote: false }
如果href
不包含哈希值,则输出:
{ remote: href }