Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 匹配一个元素';s类到另一个元素';s ID,或另一个元素的*部分';身份证_Jquery_Loops_If Statement - Fatal编程技术网

Jquery 匹配一个元素';s类到另一个元素';s ID,或另一个元素的*部分';身份证

Jquery 匹配一个元素';s类到另一个元素';s ID,或另一个元素的*部分';身份证,jquery,loops,if-statement,Jquery,Loops,If Statement,这样一个简单的概念,但我正在努力表达它。。。为我的长篇大论提前道歉 我有一个带有类的容器div,例如;我想用这个类做两件事: 向nav元素添加一个类(例如“active”),该元素的ID与div容器的类匹配(例如“nav primary li”apples) 如果该元素的部分ID与#容器的类(例如,div#secondary apples)匹配,则将同一类添加到另一个元素中 我假设有一个.each()循环来检查主导航列表项的ID,并检查辅助导航的div ID。。。虽然后者需要修剪前缀。。。或者我

这样一个简单的概念,但我正在努力表达它。。。为我的长篇大论提前道歉

我有一个带有类的容器div,例如;我想用这个类做两件事:

  • 向nav元素添加一个类(例如“active”),该元素的ID与div容器的类匹配(例如“nav primary li”apples)
  • 如果该元素的部分ID与#容器的类(例如,div#secondary apples)匹配,则将同一类添加到另一个元素中
  • 我假设有一个.each()循环来检查主导航列表项的ID,并检查辅助导航的div ID。。。虽然后者需要修剪前缀。。。或者我应该更简单地说,如果辅助导航div id包含div#container类

    我尝试了一些类似的变化:

    <script type="text/javascript">
       $(document).ready(function() {
    
        $('#nav-primary li').each(function(){
           var containerClass = $('#container').attr('class');
           var secondaryID = $('#nav-primary li').attr('id');
    
                // something like
                if ('#nav-primary li id' == (containerClass)
                {
                }
    
                // or should I first store a variable of the LI's ID and do something like this:
                if ( secondaryID == containerClass )
                {
                }
    
                //   and for the trickier part, how do I filter/trim the secondary nav div IDs, something like this:
           var secondaryNavID = $('#aux-left div[id ... something here to strip the 'secondary-' bit ... ]');
    
          }); // end each
    
    }); // end doc.ready.func
    </script>
    
    
    $(文档).ready(函数(){
    $('#nav primary li')。每个(函数(){
    var containerClass=$('#container').attr('class');
    var secondaryID=$('#nav primary li').attr('id');
    //差不多
    如果(“#导航主li id”==(集装箱类)
    {
    }
    //或者我应该先存储LI的ID变量,然后执行以下操作:
    if(secondaryID==容器类)
    {
    }
    //至于更棘手的部分,我该如何过滤/修剪辅助导航分区ID,如下所示:
    var secondaryNavID=$(“#aux left div[id…此处的内容用于剥离“secondary-”位…]);
    })//结束每一个
    });//结束doc.ready.func
    
    标记为,例如:

    <div id="container" class="apples"> ...
       <ul id="nav-primary">
          <li id="apples"> ...
          <li id="oranges"> ...
          <li id="bananas"> ...
       </ul>
    
    
    
    <div id="aux-left">
       <div id="secondary-apples"> ... 
       <div id="secondary-oranges"> ... 
       <div id="secondary-bananas"> ... 
    
    。。。
    
    • 。。。
    • 。。。
    • 。。。
    ... ... ...
    非常感谢您的建议,
    svs不确定我是否了解您的需求:

    向nav元素添加一个类(例如“active”),该元素的ID与div容器的类匹配(例如“nav primary li”apples)

    表示的是
    id
    s,而不是类。CSS类是使用
    表示的,例如
    .myclass
    !表达式
    li
    没有意义。你的意思是
    li#apples
    ?在这种情况下,你可以将
    li
    去掉:只有一个元素具有
    id
    “apples”无论如何,附加的
    li
    选择器没有帮助

    如果该元素的部分ID与#容器的类(例如,div#secondary apples)匹配,则将同一类添加到另一个元素中


    也许您正在查找
    ~=
    *=
    ?例如,您可以选择
    E[foo*=“bar”]
    。还要确保不要被
    愚弄。每个
    方法:jquery通常对所有匹配的元素进行操作。您提供的
    每个
    方法可能不是您想要的,因为它不访问
    这个
    ,也不访问“循环变量”:就我所知,声明不正确。

    您不需要循环使用
    .each()
    通过导航元素。您只需要正确的导航


    多亏了芒奇和记忆之星

    Munch-太离谱了!这种简单性正是我从一开始就追求的,但就是无法将其拼凑在一起…顺便说一句,默认情况下没有“活动”类,所以我能够修剪您的解决方案的两行-一件美丽的事情!…我很高兴我以前找到了这个解决方案:

    $(document).ready(function() {
        var containerClass = $('#container').attr('class');
    
        $('#nav-primary li').each(function(){
            var secondaryID = $(this).attr('id');
            if  ( secondaryID == containerClass )
                {
                    $(this).addClass('active');
                    $('#aux-left').find('div[id*="'+secondaryID+'"]').each(function(){
                        $(this).addClass('active');
                    }); // end #aux-left.find
                }       // end if
        }); // end #nav-primary.each    
    }); // end doc.ready.func
    
    ……但你的更好

    非常感谢


    干杯,svs

    谢谢mnemosyn…是的,我对我的问题还不够清楚,但我上面的回答应该会澄清…干杯!
    $(document).ready(function() {
        var containerClass = $('#container').attr('class');
    
        $('#nav-primary li').each(function(){
            var secondaryID = $(this).attr('id');
            if  ( secondaryID == containerClass )
                {
                    $(this).addClass('active');
                    $('#aux-left').find('div[id*="'+secondaryID+'"]').each(function(){
                        $(this).addClass('active');
                    }); // end #aux-left.find
                }       // end if
        }); // end #nav-primary.each    
    }); // end doc.ready.func