javascript - jquery if不起作用

查看:93
本文介绍了javascript - jquery if不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

<script src="jquery-2.2.2.min.js"></script>
<script>
    $(function () {
        var click = 1;
        if (click == 1) {
        $(".span").hover(function () {
            var index = $(this).index() + 1;
            var star = "0px -" + index * 16 + "px";
            $("div").css({"background-position": star});
        }, function () {
            $("div").css({"background-position": "0px 0px"});
        })
    }
        $(".span").click(function () {
            var cs=$(this).index() ;
            var cs1=cs * 16 +96;
            var cs2="0px -"+cs1+"px";
            $("div").css({"background-position":cs2});
            click=0;
            })
    })
</script>

用JQ写了一个hover事件和click事件 现在想如果click后 hover事件就不起作用,使用了if。但是if不起作用了 ,不明白啊。。小弟求教各位大佬了。。。。

解决方案

要明确的一点是,$(selector).click/hover(callback)是对相应的动作进行注册,真正在事件触发后运行的逻辑是在callback中的,所以你的代码中if判断逻辑只会在代码初次加载的时候才会运行。
至于修改方法有两种实现:
一是按你的思路来,把if放到hover的回调函数里面,代码如下:

    $(function() {
      var click = 1;

      $(".span").hover(function() {
        if (click === 1) {
          var index = $(this).index() + 1;
          var star = "0px -" + index * 16 + "px";
          $("div").css({
            "background-position": star
          });
        }
      }, function() {
        $("div").css({
          "background-position": "0px 0px"
        });
      })


      $(".span").click(function() {
        var cs = $(this).index();
        var cs1 = cs * 16 + 96;
        var cs2 = "0px -" + cs1 + "px";
        $("div").css({
          "background-position": cs2
        });
        click = 0;
      })

    })

二是用bind绑定事件,在click的回调函数中对hover进行unbind解绑

这篇关于javascript - jquery if不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆