这段代码为什么没有效果$(".aaron").focus(function() {$(this).css('border', '2px solid red') })
不是focus()在元素本身产生,focusin()在元素包含的元素中产生
那么这段代码不应该是点击div的时候里层的input就有效果 但是为什么一定点在input上才有效果$(".aaron1").focusin(function() {
$(this).find('input').val('冒泡捕获了focusin事件')
})
楼上说的有道理,个人理解是:表单元素可以用focus、focusin、blur、focusout来触发相应的事件,但对于div等只能用focusin和focusout来触发事件,也就是div上有这个事件,点击input就能触发。
因为div这个元素不支持focus。由于focus不进行冒泡针对本身,所以要么直接让input用focus,要么就用focusin冒泡传给input。
跟没说一样,不理解才问,说的跟课程里面的一样等于没解释,我也懵逼了!
我第一次看错了,代码中的.aaron指向的是input外层的div,所以,你这个代码会对外层的div起作用!
.focusin()方法和.focus()的事件源不同~· 举个例子 <p><input type="text" /></p> 其中input元素可以触发focus()事件;p是input的父元素,当它包含的元素input触发了focus事件时,它就产生了focusin()事件。 个人理解为:focus()在元素本身产生,focusin()在元素包含的元素中产生。
你这段代码本身拼写就错了:$(".aaron").focus(function() {$(this).css('border', '2px solid red') }),改正拼写就好了,正确代码:$(".aaron2").focusin(function() {$(this).css('border', '2px solid red') })!