我是jQuery的新手,我在浏览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')
})
})
我试着理解上面的代码,所以我made a Fiddle。
现在,如果你在代码中看到if条件:
if ($this.is(':visible')) {
$('input').trigger('focus');
console.log($this + ' ' + 'is visible');
} else {
console.log($this + ' ' + 'invisible');
}
现在,即使我有以下显示规则,即
input {
display:none;
}
if条件仍然通过;这是我的第一个难题。为什么if条件通过了?
我的第二个困难是if条件中的一行,即
$this.trigger('focus');
现在,即使if条件通过了,输入也没有得到焦点,为什么?
2条答案
按热度按时间mhd8tkvw1#
我对你的代码做了一些小改动,现在看起来一切都对我有效:
http://jsfiddle.net/v36zoy1g/2/
要聚焦一个元素,你不需要花哨的代码。
.focus()
函数为你做了这项工作!实际上,我想这就是它,老实说,我不记得我改变的其他任何东西。:plvjbypge2#
您尚未在
$this
上缓存$(this)
。您可以用途: