例えばC++に比べてjavascriptは型がユルいんで、「これ渡してちゃんと受け取ってくれるんやろか」とか不安になったりする、とか。そういうの。
言語の考え方が違うんで、その切り替えに一寸時間が掛かったりする。
jQuery UI。
因みに1.10.0。
一旦.accordion()で設定した後で要素を追加しても、そのままでは追加された要素のとこはaccordionにならないっぽい。
色々テストコード書いてみたりしたけど、うまくいかず、ビミョウにハマる。
うーん。どうしたものか。
他のjQueryパーツを寄せ集めて自分で組み立てた方が早いか・・・。
と思いつつ一寸調べてみたら、どうもイッペンdestroyしてから.accordion()で設定し直さなければならないっぽい。
てかちゃんとAPI Document読めっつー話。
オウケイ。
ほいじゃあつって、テストコードの頭に.accordion("destroy")をくっつけてみたんだけど、うまくいかない。
どうも.accordion()で設定されてない状態でdestroyするとイカンっぽい。
なので最初に一回.accordion()で設定してから、要素が追加される度にdestroyして再度設定し直す感じで。
これでOK。
解ってみれば簡単な話なんだけど、解るまでが疑心暗鬼な感じ。
まあこの辺がセンスの無さですな、という話。
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
<script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
<script type="text/javascript">
//<h3>に番号振る用
var sum=0;
$(function(){
//取り敢えずイッペンaccordion作っとく
$("#chau").accordion();
//ボタンクリックで要素追加、その後accordionの設定
$("#button").bind("click", function(){
var chau = "<h3>chau"+sum+"</h3>"
+"<div>chau chau chau? chau chau,"
+" chau chau chaun chau?</div>";
$("#chau").append(chau);
sum++;
setAccordion();
});
});
//アコーディオンの設定
//イッペンdestroyしてから設定する
function setAccordion(){
$("#chau").accordion("destroy");
$("#chau").accordion({
header: "h3",
});
}
</script>
</head>
<body>
<button id="button">add</button>
<div id="chau"></div>
</body>
</html>
こんな感じ。何故かsyntaxhighlighterで<br />が使えない・・・。