2

select水平ブロックに動的に要素を作成したい。そして、面白い結果が得られます。正しい方法は何ですか?

JSFiddle

4

4 に答える 4

2

新しい要素を追加する場所を定義する必要があります。これには、 を使用します.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.

于 2013-04-02T21:32:31.680 に答える
1

主な問題は、毎回「私を押してください!!」ということだと思います。ボタンが押されると、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関数に渡すと、ボタンがクリックされたときに関数が実行されます。

于 2013-04-02T18:40:13.300 に答える
1

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();
})

更新されたフィドル

于 2013-04-02T18:42:08.467 に答える
0

$("#sm").selectmenu();をに変更$("select").selectmenu();

上記の方法を使用すると、新しくプッシュした要素の ID またはクラスに関係なく、スタイルが適用されます。

ここでライブフィドルをチェックしてくださいhttp://jsfiddle.net/mayooresan/VMj4U/6/

于 2013-04-02T19:00:07.643 に答える