嘿伙计们正在浏览modal.js的来源,并遇到了以下几行代码。
$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')
})
})
$ target实际上只是以下内容:
<div aria-hidden="false" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" id="myModal" class="modal fade in" style="display: block;">
我在上面的代码中无法理解的是检查isDefaultPrevented的原因
正在div
??
即。以下代码行:
if (showEvent.isDefaultPrevented()) return
有人可以解释一下吗?
我的难度也可以在git上找到:Line 331
谢谢。
答案 0 :(得分:0)
我看不出你认为$target
DIV得到任何检查的地方。实际上isDefaultPrevented
是一个标准jquery function,它指示用户是否试图拦截show事件,从而影响默认事件处理。并且为事件对象调用此函数,而不是$target
答案 1 :(得分:0)
'show.bs.modal'
是在div上触发的事件名称。这段代码在那个div上的事件上监听。
现在,您粘贴的代码点:
如果另一段代码已经捕获了事件并在事件对象上调用了preventDefault()
,那么,当执行这段代码时,它将使用isDefaultPrevented
知道并返回而不做任何事情。
它可以阻止该事件的默认行为,例如,可以阻止click
事件的默认行为。