问题:
我有一个由两个选项卡组成的列表。当我提交表单并且页面重新加载时,我想跟踪用户上次在哪个选项卡上,以便再次激活它。
网页代码:
<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');