Javascript 我无法获取锚标记的父元素

Javascript 我无法获取锚标记的父元素,javascript,jquery,html,Javascript,Jquery,Html,HTML代码: <ul class="nav nav-tabs"> <li role="presentation" id="tab1" class="active"><a onclick="switchTabs(1)">Tab1</a></li> <li role="presentation" id="tab2"><a onclick="switchTabs(2)">Tab2</a>&

HTML代码:

<ul class="nav nav-tabs">
    <li role="presentation" id="tab1" class="active"><a onclick="switchTabs(1)">Tab1</a></li>
    <li role="presentation" id="tab2"><a onclick="switchTabs(2)">Tab2</a></li>
</ul>

原因是什么?

将元素发送到函数中,然后您将得到它的父元素:

<a onclick="switchTabs(this,1)">

将元素发送到函数中,然后您将得到它的父元素:

<a onclick="switchTabs(this,1)">

检查此方法以使其更简单(并使用
$(this)

$(文档).on('click','nav li a',function(){
让tab=$(this).data('tab');//$(this)是单击的a。
$('.nav li.active').removeClass('active');//隐藏活动选项卡
$('.nav li#tab'+tab).addClass('active');//显示选项卡
})
.active{font size:20px;color:red}

  • tab1
  • tab2

检查此方法以使其更简单(并使用
$(此)

$(文档).on('click','nav li a',function(){
让tab=$(this).data('tab');//$(this)是单击的a。
$('.nav li.active').removeClass('active');//隐藏活动选项卡
$('.nav li#tab'+tab).addClass('active');//显示选项卡
})
.active{font size:20px;color:red}

  • tab1
  • tab2

试试这种方法,我认为这将是更好的解决方案


.主动{
颜色:红色;
}
  • tab1
  • tab2
功能开关选项卡(elm){ var$li=$(elm.parent(); if(!$li.hasClass('active')){ $li.addClass(“活动”); $li.sides().removeClass('active'); } }
试试这种方法,我认为这将是更好的解决方案


.主动{
颜色:红色;
}
  • tab1
  • tab2
功能开关选项卡(elm){ var$li=$(elm.parent(); if(!$li.hasClass('active')){ $li.addClass(“活动”); $li.sides().removeClass('active'); } }
您只将索引而不是此对象传递给switchTab函数。您可以使用idx获取单击的li,然后放入逻辑以添加/删除活动类

请参阅下面的代码

功能切换选项卡(idx){
//这不起作用
//var$li=$(this.parent();--您没有在函数中的任何地方传递它,因此它没有得到
$('li').removeClass('active');//删除所有活动
var$li=$('#tab'+idx).addClass('active');//使用idx创建单击的li的选项卡id并添加active类
}
.active{
颜色:红色;
}

  • tab1
  • tab2

您只将索引而不是此对象传递给switchTab函数。您可以使用idx获取单击的li,然后放入逻辑以添加/删除活动类

请参阅下面的代码

功能切换选项卡(idx){
//这不起作用
//var$li=$(this.parent();--您没有在函数中的任何地方传递它,因此它没有得到
$('li').removeClass('active');//删除所有活动
var$li=$('#tab'+idx).addClass('active');//使用idx创建单击的li的选项卡id并添加active类
}
.active{
颜色:红色;
}

  • tab1
  • tab2

您可以通过
开关选项卡(1)
传递
$(this)
,调用函数时未定义
this
。最好使用jQuery分配侦听器,而不是在模板中使用
onclick
。然后,jQuery将为您的执行此部分。您可以使用
开关选项卡(1)
传递
$(this)
,调用函数时您没有定义
this
。最好使用jQuery分配侦听器,而不是在模板中使用
onclick
。那么,jQuery将为您的用户完成这一部分。谢谢!它成功了,谢谢!它成功了。
function switchTabs(elm,idx) {
// this is not working
  var $li = $(elm).parent();
  // Rest of your code...