我是JQuery的新手,並且一直試圖實現一個選項卡式界面,其中的選項卡是動態添加的,其內容是通過Ajax加載的。我正在使用JQuery-ui選項卡。我一直在努力解決這個問題好幾天,並且一直在Google上搜索,並在SO中閱讀所有相關的主題。現在,如果我只添加一個選項卡,界面就可以工作 - 創建選項卡,選擇選項卡,並通過Ajax加載其內容。但是,當我添加第二個選項卡時,其內容似乎已正確加載,但是當我選擇第一個選項卡時,我會看到第二個選項卡的內容附加到第一個選項卡的內容,然後我不能再在標籤。JQuery選項卡動態添加ajax
我正在使用Rails 3.代碼在Coffeescript中,但我認爲應該很容易閱讀任何Javascript'er。以下是一些注意事項:
$('a.edit')
是我的選擇器添加選項卡。爲了避免多次發射,我首先檢查選擇器是否已被綁定,然後用鼠標點擊添加標籤- 該標籤關閉效果不錯
- 該url和標籤名稱作爲屬性傳遞。網址指向html表單(通過Rails中的partials)
- 在生成的html中,當我添加一個選項卡時,兩個ui-tab面板用id「ui-tabs-1」和「ui-tabs-2 」。該選項卡具有指向第二個的href。只有第一個有「.ui-tabs-hide」。
- 當我添加第二個選項卡時,我將有四個用戶界面面板,其中的選項卡指向「ui-tabs-2」和「ui-tabs-4」,但沒有一個具有「。 UI的標籤隱藏」。
下面是代碼
$(->
if !($('a.edit').is('.bound'))
$('a.edit').on('click', ->
addTab($(this).attr('url'), $(this).attr('tag'))
)
$('a.edit').addClass('bound')
$tabs = $('#tabs').tabs
#$tabs.tabs
closable: true
cache: true
tabTemplate: '<li><a href="#{href}">#{label}</a> <span class="ui-icon ui-icon-close">Remove Tab</span></li>'
add: (event, ui) ->
$tabs.tabs('select', '#' + ui.panel.id)
addTab = (url, tab_name)->
$tabs.tabs('add',url,tab_name)
$("#tabs span.ui-icon-close").live(
"click", ->
index = $("li", $tabs).index($(this).parent())
$tabs.tabs("remove", index)
)