Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
Javascript 带有类的jQuery最近的li不';行不通_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 带有类的jQuery最近的li不';行不通

Javascript 带有类的jQuery最近的li不';行不通,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有菜单(类别列表),0级李有等级“.cat\u cat\u h”,1级。cat\u par\u c” HTML: 描述:对于集合中的每个元素,通过测试元素本身并在DOM树中遍历其祖先,获取与选择器匹配的第一个元素 这意味着最近的()函数在一个方向上工作。如果要转到父函数并返回到另一个,必须先调用父函数(),如下所示: $(document).ready(function(){ $(".cat_cat_h").parent('ul').find(".cat_par_c").show();

我有菜单(类别列表),0级李有等级“.cat\u cat\u h”,1级。cat\u par\u c”

HTML:

描述:对于集合中的每个元素,通过测试元素本身并在DOM树中遍历其祖先,获取与选择器匹配的第一个元素

这意味着
最近的()
函数在一个方向上工作。如果要转到父函数
并返回到另一个
  • ,必须先调用
    父函数()
    ,如下所示:

    $(document).ready(function(){
       $(".cat_cat_h").parent('ul').find(".cat_par_c").show();
    });
    
    编辑后再编辑:

    如果需要选定元素的上一个和下一个元素,请尝试以下操作:

    $(document).ready(function(){
       $( ".level-0.active" ).prev().show();
       $( ".level-0.active" ).next().show();
    });
    

    为了回应保尔森杀手,我将详述我的答案

    任何语言,口语(英语、西班牙语、意大利语、法语、德语等)或书面(HTML、CSS、JavaScript、C++、PASCAL、BASIC等)需要流利地以各种不同的方式表达某一概念、想法或任务。 我将尝试以这个特定的noob能想到的尽可能多的方式来处理这个特定的问题

  • jQuery选择器——上面已经很好地阐述了这一点,我唯一要说的是jQuery在加载时间(微秒到毫秒)方面的一个微不足道的缺点,可能比原生js运行的时间(微秒)稍长

  • CSS类——处理这个问题的一种方法是使用额外的CSS类——添加一个类,比如说“li456”,它是一个“空”类类,因为它不包含CSS样式,只用于标识特定的一行或几行代码。下面是一个例子。这有点低效,因为在一行html中附加了这么多类,并且需要在部分中查找其他类,甚至是附加的样式表,因此很难遵循代码

  • CSS id——甚至更麻烦,因为在一个页面上只能使用一个id,在这个特殊情况下,需要三个id。同样的情况也适用于类的ID,更糟糕的是,您必须查找三倍于类的ID,因为一个类可以与给定页面上的多个html行相关联。下面是一个示例,展示了ID的使用
  • CSS的一个变体是伪类的概念,CSS技巧的专家们对这些灵活而强大的方法进行了很好的回顾()。:lt(x)选择类型的前x个元素。这是你的电话号码。:lt()伪类是jquery特有的,不是CSS标准的一部分
  • 纯javascript也是一种可能性,但在这种特殊情况下,您必须向所讨论的三个元素添加一个id。这是你的电话号码
  • document.getElementById('li4').style.display='block'
    document.getElementById('li5').style.display='block'
    document.getElementById('li6').style.display='block'

  • 纯javascript可用于选择类名,并返回可由[n]解析的数组。这显示了一个暴力方法的示例。这使用for循环遍历三个元素
  • document.getElementsByClassName('cat_par_c')[n].style.display='block'

  • 然后我们转到“display”,它可以用jQuery.show、.css('display','block')和javascript.style.display='block'处理。这演示了这些方法
  • 我敢打赌还有更多的方法

  • 谁知道呢?我看不到您选择的DOM。我不知道该类是否存在。请发布您的html代码和小提琴,以便我们可以帮助您。应该注意的是,最近的()以当前元素开头,但不可能知道这里有什么问题?添加了html。我试图只显示与.level-0.active类相关的level-1元素。问题是您需要阅读
    .closest()
    我试图只显示与.level-0.active类相关的level-1元素。那么,我该如何选择李?首先是活跃课堂?@Tim:如果这是你的问题,你为什么不问呢?如果您想将
    .level-1
    类作为相对于
    .level-0.active
    的目标,您不认为可能需要使用这些选择器吗?$(“.cat\u cat\u h.active”).parent('ul').find(.cat\u par\u c”).show();还是不行。它显示/隐藏所有元素,而不仅仅是最接近.active的元素。@Tim:所有
    .cat\u par\u c
    元素都是
    .level-1
    ,并且与
    .active
    元素位于相同的
    UL
    容器中。那有什么问题?你说你想针对
    .level-1
    元素,对吗?看一下,你能提供我答案的详细信息吗?你只是发布代码,但你应该解释你做了什么以及为什么这么做。这也是一个帮助人们理解问题的地方。让我们看看——我这样做是为了一种“不同的方法”(如我的回答所述)——你可以花时间使用.parent/.child/.nearest/.prev/.next,也可以使用一个更简单的伪类。我敢打赌还有很多其他的方法我不知道。任何在这里发帖的人都应该知道一些关于伪类的知识,所以它们不需要解释。。。但是,如果人们在搜索类似的问题时,看到这篇文章却不明白你的答案,那又该怎么办呢?人们并不知道什么是伪类。不熟悉js、html、css,。。。我们需要了解这一点。因此,你应该给他们一个简短的总结,说明你做了什么,以及它(可能)是如何工作的。关键是,你想教别人。你只是不想给他们一个答案,他们可以复制他们的代码,他们不知道被剪掉的代码会做什么。
    $(document).ready(function(){
       $(".cat_cat_h").parent('ul').find(".cat_par_c").show();
    });
    
    $(document).ready(function(){
       $( ".level-0.active" ).prev().show();
       $( ".level-0.active" ).next().show();
    });
    
          $(".li456").show();
    
      $("#li4, #li5, #li6").show();
    
    $(".text-links .cat_par_c:lt(3)").show();
    
    $('.cat_par_c:eq(0)').show();
    $('.cat_par_c:eq(1)').css('display', 'block');
    document.getElementsByClassName('cat_par_c')[2].style.display='block';