如何正确创建动态选择水平方向?

时间:2013-04-02 18:31:02

标签: javascript jquery jquery-mobile

我想在水平块中动态创建select元素。并且有趣的结果。什么是正确的方法?

JSFiddle

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

我认为主要问题是每次“推我!!”按下按钮,您将追加id属性为sm的select元素。拥有相同id的多个元素是无效的HTML,可能会导致Javascript出现问题。请参阅this question

即,$("#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函数应该在单击按钮时运行该函数。

答案 2 :(得分:1)

您应该使用class并仅在最后添加的select元素上应用selctmenu,而不是使用id。检查这个小提琴

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

Updated Fiddle

答案 3 :(得分:0)

$("#sm").selectmenu();更改为$("select").selectmenu();

使用上面提到的方法,无论你新推出的元素的id或类是什么,都会得到应用的样式。

在这里查看实时小提琴http://jsfiddle.net/mayooresan/VMj4U/6/