Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery如果链接有类,则将类应用于其父类_Jquery - Fatal编程技术网

jQuery如果链接有类,则将类应用于其父类

jQuery如果链接有类,则将类应用于其父类,jquery,Jquery,我有一个简单的列表: <ol> <li><a href="#" class="on"> I'm on</a> </li> <li><a href="#"> I'm off</a> </li> <li><a href="#"> I'm off</a> </li> </ol> 如果 致: 使用cs

我有一个简单的列表:

<ol>
    <li><a href="#" class="on"> I'm on</a> </li>
    <li><a href="#"> I'm off</a> </li>
    <li><a href="#"> I'm off</a> </li>
</ol>

  • 如果

    致:

  • 使用css有100种更好的方法,但都涉及到重构我设置的复杂滑块。如果我可以使用
    a.on
    来影响它的
    .parent()
    ,我就完全准备好了

    Le fiddle:

    这应该可以做到:

    $('a.on').parent('li').addClass('active');
    


    您已将lis中所有锚定的父级设置为黄色(如果任何锚定和类处于打开状态)

    改用这个:

    //remove on states for all nav links
    $("li a").removeClass("on");
    $("li").removeClass("yellow");
    
    //add on state to selected nav link
    $(this).addClass("on");
    $(this).parent().addClass('yellow');
    

    在小提琴中,将代码更改为

    if ( $(this).hasClass('on') ){ 
        $(this).parent().addClass('yellow'); 
    }
    

    像下面这样的东西应该会起作用

    编辑:简化了您的代码

    $("li a").click(function(e){
    
        //stop browser default
        e.preventDefault();
    
        //remove on states for all nav links
        $("li a").removeClass("on").parent().removeClass('yellow');
    
        //add on state to selected nav link
        $(this).addClass("on").parent().addClass('yellow');
    
    });   
    

    只需更换线路即可

    $('li a').parent().addClass('yellow');
    


    我想这就是你要找的

    var $lis = $('li'),
        $links = $lis.children('a');
    
    $links.click(function(e){
    
        //stop browser default
        e.preventDefault();
    
        var $this = $(this);
    
        //remove on states for all nav links
        $links.removeClass('on');
        $lis.removeClass('yellow');
    
        //add on state to selected nav link
        $this.addClass("on").parent().addClass('yellow');
    });                    
    

    小提琴是。

    如果单击
    A
    ,则在
    li
    上设置
    class=“yellow”
    。不要给
    a
    额外的
    class=“on”


    
    

  • 小提琴中的CSS缺少一个
    }
    $(this).parent().addClass('yellow');
    
    var $lis = $('li'),
        $links = $lis.children('a');
    
    $links.click(function(e){
    
        //stop browser default
        e.preventDefault();
    
        var $this = $(this);
    
        //remove on states for all nav links
        $links.removeClass('on');
        $lis.removeClass('yellow');
    
        //add on state to selected nav link
        $this.addClass("on").parent().addClass('yellow');
    });                    
    
    $("li a").click(function(e){
    
      //stop browser default
      e.preventDefault();
    
      //remove on states for all nav links
      $("li").removeClass("yellow");
      $("li a").removeClass("on");
    
      //add on state to selected nav link
      $(this).addClass("on");
      $(this).parent().addClass('yellow');
    
    }); 
    
    $("li a")
        .click(function(e) {
            //stop browser default
            e.preventDefault();
    
            //remove on states for all nav links
            $(this).parent().siblings().removeClass("yellow");
    
            //add on state to selected nav link
            $(this).parent().addClass("yellow");
    
        })
    .end();
    
    p {margin: 1em 0; } strong {font-weight: bold }
    
    ol {width: 125px;background: #eee; }
    
    li { padding: 10px; border-bottom: 1px solid;}
    
    .yellow a {background: #ccc; }
    
    .yellow {background: #ffff00;}
    ​
    
    <ol>
        <li class="yellow"><a href="#"> A</a> </li>
        <li><a href="#"> B</a> </li>
        <li><a href="#"> C</a> </li>
    </ol>