如何保持一个图像按钮处于活动状态,直到单击另一个

时间:2014-12-04 13:59:30

标签: jquery html button onclick mouseover

我正在使用设置网站(div可能是更好的选择,但目前我正在使用框架)。它由menu.html&组成。 main.html中。 Main.html分别更改了menu.html中单击按钮的位置。

menu.html - 大约9个按钮 - 每个按钮有3个相关图像    - 默认(xxx.jpg)    - 鼠标悬停(xxx_hover.jpg)    - 点击(xxx_onclick.jpg)

AIM 1.鼠标悬停时图像更改并在mouseout上返回默认值 2.单击时图像更改,并保持单击,直到单击另一个(在同一帧内)

到目前为止我... 我不知道如何保持图像保持为xxx_onclick.jpg直到另一个点击。另外,使用下面的代码,我收到一个错误;当我鼠标悬停在单击的图像上时,它会尝试找到不存在的xxx_onclick_hover.jpg。我不确定我应该使用哪些功能。

<head>
<script type="text/javascript" src="jquery-1.11.1.min.js"></script>
</head>

<body>
<img class="menu_btn" src="button1S.jpg"><br>
<img class="menu_btn" src="button2S.jpg"><br>
<img class="menu_btn" src="button3S.jpg"><br>
<img class="menu_btn" src="button4S.jpg">
</body>

<script>
$(".menu_btn")
    .mouseover(function() {//onmouseover
    this.src = this.src.replace('.jpg', '_hover.jpg');//replace src link from .jpg to _hover.jpg
    })

    .mouseout(function() {//onmouseout
    this.src = this.src.replace('_hover.jpg', '.jpg');//replace src link from _hover.jpg to .jpg
    })

    .click(function() {//onclick
    $(".menu_btn").unbind('mouseover');//disable mouseover to prevent error (ie. button1S_onclick_hover.jpg), but this disable all images...
    this.src = this.src.replace('_hover.jpg', '_onclick.jpg');//onclick reply _hover.jpg to _onclick.jpg
    }
);
</script>

非常感谢你。

下面是一组用Joce建议测试的代码 *尚未100%实用。

<html>
<head>
    <style type="text/css">
        .menu-btn {
            background: url('http://icdn.pro/images/en/s/m/smiley-smile-icone-8052-128.png') no-repeat center;
            width: 128px;
            height: 128px;
            display: inline-block;
        }
        .menu-btn:hover {
            background: url('http://www.baza-lesnik.ru/images/blobwars.png') no-repeat center;
        }
        .menu-btn.active {
            background: url('http://cdn.flaticon.com/png/256/40230.png') no-repeat center;
        }
    </style>
</head>

<body>
    <a href="#" class="menu-btn"></a>
    <a href="#" class="menu-btn"></a>
    <a href="#" class="menu-btn"></a>
    <a href="#" class="menu-btn"></a>
    <a href="#" class="menu-btn"></a>
</body>

<script type="text/javascript">
    $(function() {
        $(".menu-btn").on("click", function(e) {
            e.preventDefault();
            $(".menu-btn.active").removeClass("active");
            $(this).addClass("active");

            //Do more things
        });
    });
</script>
</html>

1 个答案:

答案 0 :(得分:0)

我建议您使用a代替img并设置background-image。 单击时,删除CSS类active并将其添加到单击的按钮。

以下是代码:

<head>
    <style type="text/css">
        .menu-btn {
            width: 16px;
            height: 16px;
            display: inline-block;
        }

        .menu-btn-1 {
            background: url('xxx.jpg') no-repeat center;
        }

        .menu-btn-1:hover {
            background: url('xxx_hover.jpg') no-repeat center;
        }
        .menu-btn-1.active {
            background: url('xxx_onClick.jpg') no-repeat center;
        }

        .menu-btn-2 {
            background: url('xxx.jpg') no-repeat center;
        }

        .menu-btn-2:hover {
            background: url('xxx_hover.jpg') no-repeat center;
        }
        .menu-btn-2.active {
            background: url('xxx_onClick.jpg') no-repeat center;
        }

        ...
    </style>
</head>

<body>
    <a href="#" class="menu-btn menu-button-1"></a>
    <a href="#" class="menu-btn menu-button-2"></a>
    <a href="#" class="menu-btn menu-button-3"></a>
    <a href="#" class="menu-btn menu-button-4"></a>
    <a href="#" class="menu-btn menu-button-5"></a>
</body>

<script type="text/javascript">
    $(function() {
        $(".menu-btn").on("click", function(e) {
            e.preventDefault();
            $(".menu-btn.active").removeClass("active");
            $(this).addClass("active");

            //Do more things
        });
    });
</script>

<强> 编辑:

由于每个按钮都有不同的图像,因此应添加一个类来处理background-image。我编辑了上面的代码。

如果您更喜欢使用javascript,则可以收听mouseoverclick事件并更改jQuery中的background-image