修改指定li元素JS的父级

modify parent of specified li element JS

本文关键字:JS 元素 li 修改      更新时间:2023-09-26

我是使用"this"的新手,但如果我正确理解了这一点,我只能在另一个函数中定义的函数中使用它。

在这种情况下,我根据li项目的a href选择它,如果它符合条件,我需要添加一个类。我觉得我很接近,但错过了一些小东西,"url[1]"来自分裂。

if ($('#Navbar li a:contains(' + url[1] + ')').attr('href')) {
    function () {
        $(this).parent().addClass('active');
    }
}

编辑:我正在循环浏览基于Li的对象,并比较href以查找匹配项。感谢所有帮助我度过难关的人。我现在对this有了更好的理解:

     $('#Navbar li a').each(function () {
     if ($(this).attr('href')==url[1]) {
            $(this).parent().addClass('active');
         }
     });

this指的是使用它的上下文。所以this指的是您创建的匿名函数。更好的解决方案是:

var nav_item = $('Navbar li a:contains(' + url[1] + ')');
if (nav_item.attr('href')) {
    nav_item.parent().addClass('active');
}

$(this(没有指向您的目标元素(我认为没有看到完整的html代码(。尝试以下代码:

var $a =$('Navbar li a:contains(' + url[1] + ')');
if ($a.attr('href')) {
        $a.parent().addClass('active');
}
 $('#Navbar li a').each(function () {
 if ($(this).attr('href')==url[1]) {
        $(this).parent().addClass('active');
     }
 });

循环就是诀窍。谢谢:@baked@brenjt@Maverick

简单!:(

if ($('Navbar li a:contains(' + url[1] + ')').attr('href')) {
    var that=this;
    function () {
        //your condition checking
        $(that).parent().addClass('active');
    }
}

更新::上面的代码是错误的

你也可以这样做。。。

$('Navbar li a:contains(' + url[1] + ')').on('click',function(){
    if($(this).attr('href')){
        if(yourCOndition){
            $(this).parent().addClass('active');
        }
    }
});