带有Jquery的标签式导航栏

时间:2009-07-30 19:18:43

标签: jquery rollover

您好我一直试图找到这个问题的答案。我正在尝试使用使用翻转的jquery创建导航栏。因此,对于三个不同的选项卡/图像,有一个On状态,关闭状态,单击状态。

例如: 主页|支持|约

我遇到的问题是获得点击/开启状态以关闭其他图像/标签,如果它已经处于开启/点击状态。保持hapening的是每个标签在单击时保持活动状态而不是切换为开启状态。

这是代码

$(document).ready(function() {


    // Navigation rollovers
    $("#nav a").mouseover(function(){
        imgsrc = $(this).children("img").attr("src");
        matches = imgsrc.match(/_on/);

        // don't do the rollover if state is already ON
        if (!matches) {
        imgsrcON = imgsrc.replace(/_off.gif$/ig,"_on.gif"); // strip off extension
        $(this).children("img").attr("src", imgsrcON);
        }

    });

        $("#nav a").click(function(){
        imgsrc = $(this).children("img").attr("src");
        matchesclk = imgsrc.match(/_clk/);


        if (!matchesclk) {
        imgsrcClkON = imgsrc.replace(/_on.gif$/ig,"_clk.gif"); // strip off extension
        $(this).children("img").attr("src", imgsrcClkON);
        }

    }); 

    $("#nav a").mouseout(function(){
        $(this).children("img").attr("src", imgsrc);
    });


}); 

任何帮助将不胜感激。我是jquery的新手,我真的很喜欢这个。

3 个答案:

答案 0 :(得分:1)

尝试使用CSS。这是一篇关于滑门技术的文章:

http://www.alistapart.com/articles/slidingdoors/

编辑以下是您应用点击状态的方式(假设您的HTML有效):

$(".yourLink").cick(function() {
   $(".yourLink").removeClass("selected");
   $(this).addClass("selected");
});

并确保在CSS中定义“selected”类。

答案 1 :(得分:0)

结合使用背景图像+ CSS作为标签的外观(如上所述),我建议您使用类表示不同的链接状态,然后从那里调整CSS。 E.g:

<div id="nav">
  <a class="on" href="#">Link 1</a>
  <a href="#">Link 1</a>
  <a href="#">Link 1</a>
  <a href="#">Link 1</a>
  <a href="#">Link 1</a>
</div>

<style type="text/css">
  #nav a { color: blue; }
  #nav a.on { color: red; }
  #nav a.current { color: green; }
</style>

<script type="text/javascript">
    $(document).ready(function(){
        $('#nav a').hover(
            function(){ $(this).addClass('on'); },
            function(){ $(this).removeClass('on'); }
        );
    });
</script>

答案 2 :(得分:0)

这对你有用吗?

<style>
    .click
    {
        background-image: url(images/click.png);
    }

   .over
   {
       background-image: url(images/over.png);
   }
</style>


$(document).ready(function()
{
    $("#nav a").mouseover(function()
    {
        if($(this).attr("class") != "click")
            $(this).addClass("over");
    });

    $("#nav a").click(function()
    {
        $("#nav a.click").removeClass("click");
        $(this).addClass("click");
    });

    $("#nav a").mouseout(function()
    {
        $(this).removeClass("over");
    });

});



<div id="nav">
<a>One</a>
<a>Tw0</a>
<a>Three</a>
</div>