修改指定li元素JS的父级

时间:2013-01-21 17:35:45

标签: javascript jquery dom

我刚开始使用'this',但如果我理解正确,我只能在另一个内定义的函数中使用它。

在这种情况下,我根据其href选择一个li项目,如果符合条件,我需要添加一个类。我觉得我很接近,但是遗漏了一些小东西,'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');
         }
     });

4 个答案:

答案 0 :(得分:3)

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

var nav_item = $('Navbar li a:contains(' + url[1] + ')');

if (nav_item.attr('href')) {
    nav_item.parent().addClass('active');
}

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

简单! :)

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

UPDATE ::上面的代码是错误的

你也可以这样做......

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