7

最近、HTMLとjQueryでプロジェクトを行っていました。私が今達成したいのは、ボタンクリックで特定のデータを使用して動的タブを作成することです。

JQuery-UIタブの私のコードは

$(document).ready(function() {
        var $tabs = $("#container-1").tabs();
            var tabTemplate = "<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close' role='presentation'>Remove Tab</span></li>",
            tabCounter = 2;

        $('#add_tab').click( function(){   
             var label = 'New',
            id = "tabs-" + tabCounter,
            li = $( tabTemplate.replace( /#\{href\}/g, "#" + id ).replace( /#\{label\}/g, label ) ),
            tabContentHtml = 'hi';
            tabs.find( ".ui-tabs-nav" ).append( li );
            tabs.append( "<div id='" + id + "'><p>" + tabContentHtml + "</p></div>" );
            tabs.tabs( "refresh" );
            tabCounter++;
        });
        $('#new').click( function(){
            $tabs.tabs('select', 2);
        });

    }); 

私のHTMLファイル

<div id="container-1">
    <ul>
        <li><a href="#fragment-1">List</a></li>
    </ul>

    <div id="fragment-1">

    </div>


</div>

<button id="add_tab">Add Tab</button>

Firebugのコンソールで[追加]ボタンをクリックすると、エラーが発生します。

ReferenceError: tabs is not defined
http://localhost:3000/
Line 38

私はjquery-uiが苦手です。この問題を解決するにはどうすればよいですか?

4

2 に答える 2

9

問題はスクリプトにあるので、これを試してください

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

        $('#add_tab').click( function(){
            var ul = tabs.find( "ul" );
            $( "<li><a href='#newtab'>New Tab</a></li>" ).appendTo( ul );
            $( "<div id='newtab'>Name :<input type='text'></input></div>" ).appendTo( tabs );
            tabs.tabs( "refresh" );
            tabs.tabs('select', 1);
        });


    }); 
于 2013-01-28T12:32:42.040 に答える
1

コードの唯一の問題は、最初に定義し、$tabs後でtabsドルサインなしで要求したことです。ドルサインを削除したところ、期待どおりに機能します(2行目のvar tabsの定義に注意してください)...jsfiddleに追加されたコードを追加しまし

$(document).ready(function() {
    var tabs = $("#container-1").tabs();
        var tabTemplate = "<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close' role='presentation'>Remove Tab</span></li>",
        tabCounter = 2;

    $('#add_tab').click( function(){   
        var label = 'New',
        id = "tabs-" + tabCounter,
        li = $( tabTemplate.replace( /#\{href\}/g, "#" + id ).replace( /#\{label\}/g, label ) ),
        tabContentHtml = 'hi';
        tabs.find( ".ui-tabs-nav" ).append( li );
        tabs.append( "<div id='" + id + "'><p>" + tabContentHtml + "</p></div>" );
        tabs.tabs( "refresh" );
        tabCounter++;
    });
    $('#new').click( function(){
        $tabs.tabs('select', 2);
    });

}); 
于 2013-03-14T22:34:49.087 に答える