为了账号安全,请及时绑定邮箱和手机立即绑定

求解两段代码

这段代码为什么没有效果$(".aaron").focus(function() {$(this).css('border', '2px solid red') })

不是focus()在元素本身产生,focusin()在元素包含的元素中产生
那么这段代码不应该是点击div的时候里层的input就有效果  但是为什么一定点在input上才有效果$(".aaron1").focusin(function() {

        $(this).find('input').val('冒泡捕获了focusin事件')

    })


正在回答

5 回答

楼上说的有道理,个人理解是:表单元素可以用focus、focusin、blur、focusout来触发相应的事件,但对于div等只能用focusin和focusout来触发事件,也就是div上有这个事件,点击input就能触发。

0 回复 有任何疑惑可以回复我~

因为div这个元素不支持focus。由于focus不进行冒泡针对本身,所以要么直接让input用focus,要么就用focusin冒泡传给input。

0 回复 有任何疑惑可以回复我~

跟没说一样,不理解才问,说的跟课程里面的一样等于没解释,我也懵逼了!

0 回复 有任何疑惑可以回复我~

我第一次看错了,代码中的.aaron指向的是input外层的div,所以,你这个代码会对外层的div起作用!

.focusin()方法和.focus()的事件源不同~· 举个例子 <p><input type="text" /></p> 其中input元素可以触发focus()事件;p是input的父元素,当它包含的元素input触发了focus事件时,它就产生了focusin()事件。 个人理解为:focus()在元素本身产生,focusin()在元素包含的元素中产生。


0 回复 有任何疑惑可以回复我~

你这段代码本身拼写就错了:$(".aaron").focus(function() {$(this).css('border', '2px solid red') }),改正拼写就好了,正确代码:$(".aaron2").focusin(function() {$(this).css('border', '2px solid red') })!

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求解两段代码

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信