JavaScript:查询子项并修改父项

标签 javascript jquery

我有一个静态生成的未排序列表,需要为给定的子 href 匹配修改父 li。这个 Action 应该通过渲染来执行,而不是通过交互来执行。我正在使用 jQuery 1.12.4。

<div id="archive_widget" class="widget-odd widget-last widget-first widget-1 widget Archive_Widget">
    <h3>Archive</h3>
    <ul>
        <li><a href="http://example.com/2018/">2018</a></li>
        <li><a href="http://example.com/2017/">2017</a></li>
        <li><a href="http://example.com/2016/">2016</a></li>
        <li><a href="http://example.com/2015/">2015</a></li>
        <li><a href="http://example.com/2014/">2014</a></li>
        <li><a href="http://example.com/2013/">2013</a></li>
        <li><a href="http://example.com/2012/">2012</a></li>
        <li><a href="http://example.com/2010/">2010</a></li>
        <li><a href="http://example.com/2009/">2009</a></li>
    </ul>
</div>

我不知道如何用 JS 做到这一点,但这个想象中的 JS 在我脑海中。

jQuery(document).ready(function() {
    var current = "<?php echo $current; ?>";

    var ArchiveList = document.querySelector('#archive_widget ul li').children;

    for (i = 0; i < productList.length; i++) {
        if (productList[i].text == current) {
            $(productList[i]).parent().addClass('active-menu');
        }
    }
});

谢谢。

最佳答案

您的代码存在一些问题:

  1. document.querySelector 只选择一个元素,在您的情况下是第一个 LI
  2. 从未声明变量 productList
  3. LI 的父级始终是一个列表,而不是 LI 本身。

这是它的一个工作版本:

$(document).ready(function() {
    var current = "2014";


    var productList = $('#archive_widget ul li a'); // select all A elements

    for (i = 0; i < productList.length; i++) {
        if ($(productList[i]).text() === current) {
            $(productList[i]).parent().addClass('active-menu'); // Parent of A will be LI
        }
    }
});

关于JavaScript:查询子项并修改父项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53110801/

相关文章:

javascript - 收集 JavaScript 兼容性数据的更好方法

php - 从图像超链接运行 PHP 函数(Facemash 项目)

javascript - 使用 React Native 创建可扩展列表

javascript - 如何从 jquery/xml 中的节点列表创建值数组?

javascript - 在不使用 foreignObject 的情况下在 SVG 中显示 CSS 图像 Sprite

javascript - css动画快进快退

插入日期选择器后,Jquery 表单验证不起作用

javascript - JQuery:在回调中引用外部范围

javascript - 使用 jQuery 更新数组中对象的物理位置

javascript - 快速 route 的动态路径