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

hover和bind不能一起用么?为什么代码无法实现?

hover和bind不能一起用么?为什么代码无法实现?

<!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这种形式绑定事件的区别

查看完整回答
6 反对 回复 2016-05-19
?
慕娘9282524

TA贡献13条经验 获得超8个赞

x=$("a");  你的html中  没有a标签 把

查看完整回答
1 反对 回复 2016-05-18
?
weibo_哆啦A梦有大口袋_0

TA贡献107条经验 获得超146个赞

x=$("a");

这是哪个元素,你的HTML结构里面有吗

查看完整回答
1 反对 回复 2016-05-18
?
一杯2块的奶茶

TA贡献226条经验 获得超75个赞


你要用下标取div不是这么用的吧,

查看完整回答
反对 回复 2016-05-19
  • 4 回答
  • 0 关注
  • 2707 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信