我刚开始使用'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');
}
});
答案 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');
}
}
});