AloNE
AloNE

Reputation: 311

how to add dynamic tabs on button click but only once

yesterday I am try using follow

$(document).ready(function() {
        var tabs = $("#container-1").tabs();
            var tabCounter = 1;

        $('#add_tab').click( function(){
            var ul = tabs.find( "ul" );
            $( "<li><a href='#fragment-4'>Call Detials</a></li>" ).appendTo( ul );
            tabs.tabs( "refresh" );
            tabs.tabs('select', 1);
            tabs.append( $('#fragment-4'));
        });
  });

But using above code,when onclick event fire generate a new tab,I dont want multiple same tab,so I want avoid adding a same tab if it already added. Please suggest me any condition to avoiding a same tab if already added ?

Upvotes: 0

Views: 238

Answers (2)

Dom Day
Dom Day

Reputation: 2562

You can keep everything the same but change to the .one event handler, which unbinds the event after one call

$(document).ready(function() {
    var tabs = $("#container-1").tabs();
        var tabCounter = 1;

    $('#add_tab').one('click', function(){
        var ul = tabs.find( "ul" );
        $( "<li><a href='#fragment-4'>Call Detials</a></li>" ).appendTo( ul );
        tabs.tabs( "refresh" );
        tabs.tabs('select', 1);
        tabs.append( $('#fragment-4'));
    });
});

Upvotes: 1

Rohan Kumar
Rohan Kumar

Reputation: 40639

Try this,

$('#add_tab').click( function(){
    var ul = tabs.find( "ul" );
    var flag=true;
    $(ul).find('li').each(function(){
        if($(this).text()=='Call Detials')
        {
            // to prevent from creating a new tab under ul
            flag=false;
        }
    });
    if(flag)//if true then create the tab Call Details
    {
        $( "<li><a href='#fragment-4'>Call Detials</a></li>" ).appendTo( ul );
        tabs.tabs( "refresh" );
        tabs.tabs('select', 1);
        tabs.append( $('#fragment-4'));
    }
});

Upvotes: 0

Related Questions