求解兩段代碼
這段代碼為什么沒有效果$(".aaron").focus(function() {$(this).css('border', '2px solid red')?})
不是focus()在元素本身產生,focusin()在元素包含的元素中產生
那么這段代碼不應該是點擊div的時候里層的input就有效果 ?但是為什么一定點在input上才有效果$(".aaron1").focusin(function() {
? ? ? ? $(this).find('input').val('冒泡捕獲了focusin事件')
? ? })
2017-03-23
樓上說的有道理,個人理解是:表單元素可以用focus、focusin、blur、focusout來觸發相應的事件,但對于div等只能用focusin和focusout來觸發事件,也就是div上有這個事件,點擊input就能觸發。
2017-02-28
因為div這個元素不支持focus。由于focus不進行冒泡針對本身,所以要么直接讓input用focus,要么就用focusin冒泡傳給input。
2017-01-02
跟沒說一樣,不理解才問,說的跟課程里面的一樣等于沒解釋,我也懵逼了!
2016-12-24
我第一次看錯了,代碼中的.aaron指向的是input外層的div,所以,你這個代碼會對外層的div起作用!
.focusin()方法和.focus()的事件源不同~· 舉個例子 <p><input type="text" /></p> 其中input元素可以觸發focus()事件;p是input的父元素,當它包含的元素input觸發了focus事件時,它就產生了focusin()事件。 個人理解為:focus()在元素本身產生,focusin()在元素包含的元素中產生。
2016-12-24
你這段代碼本身拼寫就錯了:$(".aaron").focus(function() {$(this).css('border', '2px solid red')?}),改正拼寫就好了,正確代碼:$(".aaron2").focusin(function() {$(this).css('border', '2px solid red') })!