2013-04-12 61 views
0

的內容選項卡我有下面的代碼:我如何可以動態改變jQuery UI的手風琴

<div id="accordion"> 
    <h3>Row 1</h3> 
    <div id="1"></div> 
    <h3>Row 2</h3> 
    <div id="2"></div> 
    <h3>Row 3</h3> 
    <div id="3"></div> 
</div> 

$("#accordion").accordion({ 
    autoHeight: false, 
    clearStyle: true, 
    active: 0, 
    change: function(event, ui) { 
    $("div#2").append('<p>Test</p>'); 
    } 
}); 

當手風琴點擊另一行,我想填補<div id="2">數據。在更改事件我試圖這樣的:

$("div #2").append('<p>Test</p>'); 

但文本「測試」印在H3,而不是DIV中...我如何能實現打印在格文???

我使用jQuery 1.9.0

這似乎是一個錯誤http://bugs.jqueryui.com/ticket/4469#comment:4是不是?

+0

請出示相關的HTML的其餘部分(如果有的話),以及部分「關於變更事件我將嘗試這種」 – Ian

+0

@Ian我更新的代碼 –

+0

我不知道你看到的,但有沒有'change'選項可以傳遞給'.accordion()'小部件 - http://api.jqueryui.com/accordion/。下面是一個使用單擊按鈕的示例:http://jsfiddle.net/BrRPz/ – Ian

回答

2

您必須重新設置爲id屬性設置的值。嘗試:

<div id="accordion"> 
    <h3 id="header1">Row 1</h3> 
    <div id="content1"></div> 
    <h3 id="header2">Row 2</h3> 
    <div id="content2"></div> 
    <h3 id="header3">Row 3</h3> 
    <div id="content3"></div> 
</div> 

這樣的話,你可以輕鬆地定位其中:

$("#content2").append('<p>Test</p>'); 

(或實際使用.append()

這是因爲id屬性必須以目標元素的唯一你真的想要。 jQuery將使用本地document.getElementById方法,該方法將返回第一個找到的元素與該id

UPDATE:

根據您的新的編輯,你需要沒有空間來使用選擇:

$("div#2").append('<p>Test</p>'); 

雖然你並不需要包括選擇的div一部分。只需使用:

$("#2").append('<p>Test</p>'); 

雖然HTML5確實允許id到以數字開頭(並且1個字符長),我建議使用一個更具描述性id,像以前我說:「內容1」等

更新2:

再次尋找它結束了,$("div #2")應實際工作爲好,因爲與id「2」 元素處於<div> 。所以技術上這個選擇器應該工作。儘管如此,我還是建議一個不是數字的選擇器,而且更具描述性。

與您的代碼,我知道了一個更具描述性的選擇,反正工作:http://jsfiddle.net/BrRPz/2/

+0

對不起,誤解了,但我沒有任何ID在h3 –

+0

@FernandoSantiago我更新。你需要使用沒有空格的選擇器(甚至沒有「div」部分) – Ian

+0

謝謝,讓我試試吧 –

0

在CSS中,ID選擇是獨特的元素。所以不要在頁面

<div id="accordion"> 
    <h3 id="1">Row 1</h3> 
    <div class="1"></div> 
    <h3 id="2">Row 2</h3> 
    <div class="2"></div> 
    <h3 id="3">Row 3</h3> 
    <div class="3"></div> 
</div> 

使用腳本重複相同的ID

$("div.2").append('<p>Test</p>'); 

注: id選擇是獨特的元素。

0

嘗試$("div#2").append('<p>Test</p>');

$("div #2")將針對一個元素與id='2'一個<div>元素中,而$("div#2")目標的<div>id='2'