【问题标题】:Navigation Active/Hover/Inactive state through JQuery通过 JQuery 导航 Active/Hover/Inactive 状态
【发布时间】:2012-07-18 03:48:15
【问题描述】:

下面的代码是我所拥有的,但不幸的是它没有做任何事情。以前我有一个部分用于交换图像,但它的代码要简单得多......如果有更简单的方法可以做到这一点,我会全力以赴。

总结一下我想要完成的是:

登陆主页 > 导航中未选择任何内容 悬停 - 图像切换到选定状态 点击时图片切换到选中状态。

感谢您的帮助!

我遇到的另一个问题是艺术家给我的文件在图像中有文字。我有两个不同的图像,一个处于选定状态,带有文本,另一个处于非活动状态,带有文本。所以我不能把文字放在上面。

jQuery

var menu = {
init: function () {

    $('.nav-image').hover(function () {
        if (!$(this).attr('id') != menu._selectedId + '-nav' && $(this).attr('src').indexOf("_on.png") == -1) {
            var src = $(this).attr('src').replace("_off.png", "_on.png");
            $(this).attr('src', src);
        }
    },

        function () {

            if ((page == "index" && $(this).attr('id') != "index-nav") || (page == "about" && $(this).attr('id') != "about-nav") || (page == "portfolio" && $(this).attr('id') != "portfolio-nav") || (page == "blog" && $(this).attr('id') != "blog-nav") || (page == "contact" && $(this).attr('id') != "contact-nav") || page == "index") {
                if (!$(this).attr('id') != menu._selectedId + '-nav' && $(this).attr('src').indexOf("_on.png") >= 0) {
                    var src = $(this).attr('src').replace("_on.png", "_off.png");
                    $(this).attr('src', src);
                }
            }
        });

}}

HTML

<div class="menu">
    <div style="float: left; hieght: 45px; width: 193px;"><img src="images/nav/left_end.png" class="nav-image"></div>
    <div style="float: left; height: 45px; width: 73px;"><a href="index.php"><img src="images/nav/home_off.png" class="nav-image" id="index-nav"></a></div>
    <div style="float: left; height: 45px; width: 80px;"><a href="about.php"><img src="images/nav/about_off.png" class="nav-image" id="about-nav"></a></div>
    <div style="float: left; height: 45px; width: 112px;"><a href="portfolio.php"><img src="images/nav/portfolio_off.png" class="nav-image" id="portfolio-nav"></a></div>
    <div style="float: left; height: 45px; width: 69px;"><a href="http://info.arkmediainc.com/blog"><img src="images/nav/blog_off.png" class="nav-image" id="blog-nav"></a></div>
    <div style="float: left; height: 45px; width: 98px;"><a href="http://info.arkmediainc.com/contact-us"><img src="images/nav/contact_off.png" class="nav-image" id="contact-nav"></a></div>
    <div style="float: left; height: 45px; width: 35px;"><img src="images/nav/right_end.png"></div>
</div>

【问题讨论】:

    标签: jquery css menu hover


    【解决方案1】:

    你可以让 CSS 为你做这件事。

    每个 div 可以是任何菜单项的背景图像,这也可以让您在其上放置文本。

    然后使用类似于this sample的代码。

    因此,您可以为每个链接提供更简洁的代码:

    <div class="nav home"><a href="index.php">Home</a></div>
    
    <script>
    jQuery('.nav').click(function() {
        jQuery(this).css("background-image",jQuery(this).css("background-image").replace("on","clicked");
    });
    <script>
    
    <style>
    .nav {
        float: left; 
        height: 45px; 
        width: 73px;;
    }
    
    .home {
        background-image: url("images/nav/home_off.png");
        }
    
    .home:hover {
        background-image: url("images/nav/home_on.png");
        }
    
    </style>
    

    【讨论】:

    • 我遇到的问题是艺术家给我的文件在图像中有文字。我有两个不同的图像,一个处于选定状态,带有文本,另一个处于非活动状态,带有文本。所以我不能把文字放在上面。
    • 只需放置“ ”或
      代替文字,文字是不需要的
    • 真正有趣的是,我今天也需要做同样的事情,现在我已经有了答案!堆栈溢出很棒!
    【解决方案2】:

    我认为如果您将 css 中的图像作为 background-images 放入 2 个类,然后只需切换元素上的类会更容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-14
      • 1970-01-01
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多