点点圈圈错错真真
2016-10-30 19:26
这节看不懂啊 。。。为什么 $(".aaron").focus(function() { $(this).css('border', '2px solid red') })这个没有效果呢
这一段本身就是不实现效果的。
注意原文中这一句话:“div是input的父元素,当它包含的元素input触发了focus事件时,它就产生了focusin()事件。”
所以说,如果代码如下,则input上出现效果,且div上产生focusin( )事件
$(".aaron input").focus(function() { $(this).css('border', '2px solid red') })
但是focus事件不是绑定到.arron的div上了吗,点击div区域不应该触发吗
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title></title>
<style>
.left div,
.right div {
width: 500px;
height: 50px;
padding: 5px;
margin: 5px;
float: left;
border: 1px solid #ccc;
}
.left div {
background: #bbffaa;
}
.right div {
background: yellow;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>
<body>
<h4>.focusin与blur</h4>
<div class="left">
<div class="aaron">
点击触发焦点(无反应):
<input type="text" />
</div>
<div class="aaron1">
点击触发焦点并冒泡:
<input type="text" />
</div>
</div>
<script type="text/javascript">
$(".aaron").focusin(function() {
$(this).css('border','1px solid red');
})
$(".aaron1").focusin(function() {
$(this).find('input').val('冒泡捕获了focusin事件')
})
</script>
</script>
<h4>.focusout与blur</h4>
<div class="right">
<div class="aaron3">
点击触发失去焦点(无反应):
<input type="text" />
</div>
<div class="aaron4">
点击触发失去焦点并冒泡:
<input type="text" />
</div>
</div>
<script type="text/javascript">
$(".aaron3").focusout(function() {
$(this).css('border', '2px solid red')
})
$(".aaron4").focusout(function() {
$(this).find('input').val('冒泡捕获了focusout事件')
})
</script>
</body>
</html>
这样处理就可以看到红框了
关键在于 “处理”两个字
focus与blur、focusin与focusout都能接受到冒泡
但是 focus与blur对冒泡不会处理,focusin与focusout会对冒泡事件处理
区别就在于“处不处理”冒泡事件
你可以吧aaron改成input自己看看效果!!
就算在 .left里产生了 focuin() 跟他自己有什么关系呢 这个 css样式为什么没有实现
jQuery基础(三)—事件篇
89997 学习 · 625 问题
相似问题