javascript - mouseout和click冲突怎么解决??

查看:502
本文介绍了javascript - mouseout和click冲突怎么解决??的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="jquery.mini.js"></script>
    
</head>
<body>
    <span>1111</span>
    
    <script type="text/javascript">
        $("span").on({
            mouseover:function(){
                $(this).text("2222");
            },
            mouseout:function(){
                $(this).text("1111");
            },
            click:function(){
                $(this).text("3333");
            }
        })
    </script>
</body>
</html>

这里的click就起不了作用了,因为会被mouseout覆盖,怎么解决?

需求是这样的,一个图标移入时是红色,移出来变为灰色,只有当点击后红色才会保留到图标上面,类似于淘宝上面的星级评分。。

谢谢各位解答,大家都建议我用css做,但这里我只是举了个例子,实际是css做不了的,得用js来,因为图标远不止一个,我还要通过当前图标移入时来判断其他图标的颜色显示。。

。。。再解释一下,我为什么非要用mouseout来做不用class也不用hover css 那是因为还有一个绑定的功能。。。

<body>
    <span>1星</span>
    <span>2星</span>
    <span>3星</span>
    <span>4星</span>
    <span>5星</span>
    <p>你选择的是:</p>

    
    <script type="text/javascript">
        $("span").on({
            mouseover:function(){
                $("p").text("您已评分星级为:"+$(this).text());
            },
            mouseout:function(){
                $("p").text("您暂未评分");
            },
            click:function(){
                $("p").text("您已评分星级为:"+$(this).text());
            }
        })
    </script>
</body>

要文字显示当前用户选择的星星数。。如果没有用户未点击图标,mouseout后就不显示星星数了。。

谢谢,各位问题已解决,感谢

<script type="text/javascript">
    var isclick=false;
    var clickResult;
        $("span").on({
            mouseover:function(){
                $("p").text("您已评分星级为:"+$(this).text());
            },
            mouseout:function(){
                if(!isclick){
                    $("p").text("您暂未评分");
                }else{
                    $("p").text("您已评分星级为:"+clickResult);
                }
            },
            click:function(){
                clickResult=$(this).text()
                $("p").text("您已评分星级为:"+clickResult);
                isclick=true;
            }
        })
    </script>

解决方案

没有太明白题主的意思,是如果click后mouseout就不执行?
如果是这样的话,那在mouseout的时候做下判断就好了,判断现在text是否是3333,或者通过全局变量来做个控制开关,click之后为false,mouseout执行前先判断。
但按照写的js来看,click之后肯定是会触发其他事件的,那么什么时候才允许触发呢?这个才是逻辑的关键了。




按照题主说的,我这边大概写了下:

var isclick=false;
$("span").on({
    mouseover:function(){
                $("p").text("您已评分星级为:"+$(this).text());
            },
            mouseout:function(){
                if(!isclick){
                    $("p").text("您暂未评分");
                }
            },
            click:function(){
                $("p").text("您已评分星级为:"+$(this).text());
                isclick=true;
            }
})

简单方法加个变量判断用户是否已点击,点击则不执行mouseout事件.

这篇关于javascript - mouseout和click冲突怎么解决??的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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