显示动态添加的选项卡jquery选项卡

I'm creating a web-application in which user adds a tab and put his content. This tabs are dynamically created. I searched for it on google and tried for given solutions but none of them worked for me. So i posted a question here.

My code is:

<div id="tabs" class="htabs">
    <a href="#tab-general"><?php echo $tab_general; ?></a>
    <a onclick="addtab();" id="add-tab"><?php echo $add_tab; ?></a>
</div> 

And script is :-

<script type="text/javascript">

$('#tabs a').tabs(); 

var tab_count = '<?php echo $tab_count; ?>';

function addtab(){

    var html = '';

    $('#add-tab').before('<a href="#product-tab-'+tab_count+'" class="nearest">Tab '+tab_count+'</a>');

    html += '<div id="product-tab-'+tab_count+'" class="nthDiv">';
    html += '<table class="form">'
    html += '<tr>';

    html += '<td>';
    html += 'Name'+tab_count;       
    html += '</td>';

    html += '<td>';
    html += '<input type="text">';
    html += '</td>';

    html += '</tr>';
    html += '</table>';

    html += '</div>';

    $('#form').append(html);
    $('#tabs a').tabs("refresh");

    //$('#tabs a').tabs( "option", "selected", -1 ); tried but doesn't work

    //$('#tabs a').tabs("option", "active", -1); tried but doesn't work


    tab_count++;

}

</script>

My jquery version is jquery-1.7.1.min.js and jquery ui version is 1.8.

The problem is the new tab is not get active/selected. I have to manually click on that tab to make it active.

1个回答

Your markup for the tabs is wrong

$('#tabs').tabs({
  beforeActivate: function(e, ui) {
    return ui.newTab.find('#add-tab').length == 0;
  }
});

var tab_count = 1;

$('#add-tab').click(function() {

  var html = '';

  $('#add-tab').parent().before('<li><a href="#product-tab-' + tab_count + '" class="nearest">Tab ' + tab_count + '</a></li>');

  html += '<div id="product-tab-' + tab_count + '" class="nthDiv">';
  html += '<table class="form">'
  html += '<tr>';

  html += '<td>';
  html += 'Name' + tab_count;
  html += '</td>';

  html += '<td>';
  html += '<input type="text">';
  html += '</td>';

  html += '</tr>';
  html += '</table>';

  html += '</div>';

  $('#tabs').append(html);
  $('#tabs').tabs("refresh").tabs("option", "active", -2);


  tab_count++;

})
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.js"></script>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/redmond/jquery-ui.css"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.js"></script>

<div id="tabs" class="htabs">
  <ul>
    <li><a href="#tab-general">Gen</a></li>
    <li><a href="#" id="add-tab">Add</a></li>
  </ul>
  <div id="tab-general">
    tab-general
  </div>

</div>

</div>
douzi2333
douzi2333 你的HTML是错的...看到上面的标记
大约 5 年之前 回复
dongxiequ3724
dongxiequ3724 并刷新选项卡给我错误$(...)。制表符(...)未定义。 我使用了$('#tabs a')。tabs(“refresh”)。tabs(“option”,“active”,-2);
大约 5 年之前 回复
doufu1939
doufu1939 如果我使用$('#tabs')。tabs(),那么它不会创建任何选项卡。 相反,tab div中的所有标签都变得不可见。 所以我必须使用$('#tabs a')。制表符
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问