<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>hover()方法切换事件</title>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js" type="text/javascript"></script>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h3>hover()方法切换事件</h3>
<div id="123">别走!你就是土豪</div>
<div id="aaa">点击</div>
<p style="display:none" id="fk" >666</p>
<script type="text/javascript">
$(function ()
{
x=$("a");
for(i=0;i<x.length;i++)
{
$("a")[i].bind("click",function()
{
$("p").css({"display":"block"});
})
$("a")[i].hover
(
function () {
$(this).addClass("orange");
},
function () {
$(this).removeClass("orange");
}
)
}
)
};
</script>
</body>
</html>
4 回答
已采纳
闹小志
TA贡献75条经验 获得超42个赞
首先需要明确,bind和hover只是两种不同的绑定事件的形式,他们之间没有任何冲突。
说一说你这段代码的问题:
1、语法错误:检查好大括号和圆括号,有报错
2、绑定事件写法的错误:$("div")[i].bind这种形式是会报错的。明白这个问题需要了解以下两点:
(1)bind是jquery对象的方法,js对象不具备bind方法,调用会报错
(2)jquery对转换js对象转换有两种办法一个是$("***").get(0)形式,一个是$("***")[0]这种形式
$("div")[i].bind 这种写法,你无意中把jquery对象转换成了js对象,这里一定是会报错的,你需要再把它转换成jquery对象才能调用bind,例如:
$($("div")[i]).bind
改造之后的代码:
$(function () { x=$("div"); for(i=0;i<x.length;i++){ $($("div")[i]).bind("click",function() { $("p").css({"display":"block"}); }); $($("div")[i]).hover(function() { $(this).addClass("orange"); },function(){ $(this).removeClass("orange"); }); } });
3、优化:在jquery中绑定事件不需要写这么麻烦,不需要for循环,最后简化之后的代码如下:
$(function () { $("div").bind("click",function(){ $("p").css({"display":"block"}); }); $("div").hover(function() { $(this).addClass("orange"); },function(){ $(this).removeClass("orange"); }); });
4、建议你也了解一下用bind绑定事件和直接用hover这种形式绑定事件的区别
添加回答
举报
0/150
提交
取消