查找子链接并使用jQuery删除父类


Find child link and remove parent class using jQuery

问题:

我有一个由两个选项卡组成的列表。当我提交表单并且页面重新加载时,我想跟踪用户上次在哪个选项卡上,以便再次激活它。

网页代码:

<ul id="myTab" class="nav nav-tabs">
    <li class="active">
        <a href="#participants" data-toggle="tab">Participants</a>
    </li>
    <li>
        <a href="#gradevalues" data-toggle="tab">Criteria</a>
    </li>
</ul>

PHP代码:

PHP 将生成一个包含"参与者"或"成绩值"的变量$subtabname。

场景:

如果我在 #gradevalues 并提交表格,变量$subtabname将包含"等级值"。我想jQuery从 #participants 中删除"活动"类并将其添加到li中以进行 #gradevalues。

问题:

我将如何使用jQuery找到使用此PHP变量的元素并移动到其父级li以删除/添加"活动"类?

[更新]:非最佳工作jQuery代码

$( "#myTab li.active" ).removeClass("active");
$( "#myTab a[href=#'.$subtabname.']" ).parent("li").addClass("active");

在 PHP 文件中:

<body data-activetab="<?php echo $subtabname ?>">

在 jQuery 文件中:

(function () {
    var subtabname = $( 'body' ).data( 'activetab' );
    var $activeTab = $( 'a[href="#' + subtabname '"]', 'myTab' ).parent();
    $activeTab.addClass( 'active' ).siblings().addClass( 'active' );
}());

我稍微优化了您的代码:

(function ( $ul, active ) {
    $ul.children().removeClass( active );
    $ul.find( 'a[href="#.$subtabname."]' ).parent().removeClass( active );
}( $( '#myTab' ), 'active' ));
我将类名

作为字符串传递以避免代码重复(在您的代码中,类名字符串重复三次)。我还将 DOM 查询的数量从两个减少到一个。

顺便说一句,如果您需要在代码的其他部分中引用 #myTab 元素,请将其缓存在变量中,并使用该变量,而不是对同一元素执行多个 DOM 查询。

$('#' + $subtabname).parent().addClass('active');

您可以从服务器端返回该 php 变量($tabname)。在javascript中做这样的事情:

var tabname = "<?php echo $tabname ?>"
// in case if other tab has this class, so remove it first safer side
jQuery('li').removeClass('active');
// add class to that required tab
jQuery('#'+tabname).parent('a').addClass('active');