select
水平ブロックに動的に要素を作成したい。そして、面白い結果が得られます。正しい方法は何ですか?
4 に答える
新しい要素を追加する場所を定義する必要があります。これには、 を使用します.after()
。次に、生成/変更されたコントロール グループにスタイルを適用する必要があります。
デモはこちら: http://jsfiddle.net/Palestinian/rKGtQ/
コード:
// append select menu after Button div
$("#Button_show_filters").after('<select id="sm"><option>Opt 1</option><option>Opt 2</option></select>');
// apply styles on select menu
$("#sm").selectmenu();
// add options to controlgroup
$( "#test" ).controlgroup( "option", "corners", true );
// create controlgroup
$( "#test" ).controlgroup().trigger('create');
controlgroup div ID は#test
.
主な問題は、毎回「私を押してください!!」ということだと思います。ボタンが押されると、id
属性がの select 要素が追加されますsm
。同じ ID を持つ複数の要素を持つことは無効な HTML であり、Javascript で問題が発生する可能性があります。この質問を参照してください。
つまり、$("#sm")
行は、ターゲットにしようとしている選択を認識していません。
たぶん、次のようなことを試してみてください:
$("button").click(function () {
$("#div_for_harakteristikinomenklatury_list").append('<select><option>Opt 1</option><option>Opt 2</option></select>');
$("#div_for_harakteristikinomenklatury_list select:last").selectmenu();
});
onclick
また、ボタンの属性を取り除く必要があります。あなたはそれを必要としません。クリック ハンドラーをclick
関数に渡すと、ボタンがクリックされたときに関数が実行されます。
id を使用する代わりに、class を使用して、最後に追加された select 要素にのみ selctmenu を適用する必要があります。このフィドルをチェックしてください
$("button").click(function show_filters() {
//alert("Hello");
$("#div_for_harakteristikinomenklatury_list").append('<select class="sm"><option>Opt 1</option><option>Opt 2</option></select>');
$(".sm:last").selectmenu();
})
$("#sm").selectmenu();
をに変更$("select").selectmenu();
上記の方法を使用すると、新しくプッシュした要素の ID またはクラスに関係なく、スタイルが適用されます。
ここでライブフィドルをチェックしてくださいhttp://jsfiddle.net/mayooresan/VMj4U/6/