是否可以使用jQuery Mobile动态创建元素?

我有一个使用jQuery构建的应用程序(并使用各种jQuery-UI工具)。

出于某种原因,我必须将其移植到智能手机/平板电脑,并决定使用jQuery Mobile(为了最大限度地减少更改次数)。

在我的vanilla应用程序中,我根据用户的交互动态创建了页面的一些元素。

例如,可以像这样创建一个滑块(p是一个带有一串参数的对象):

function createSlider(p){ return $("
",{ "id":p.id, "class":p.divClass, }).slider({ "orientation": p.align, "min":p.constraint.min, "max":p.constraint.max, "step":p.step, "value":p.curVal, "animate":"normal" /*and some event handling here, but it doesn't matter*/ }); }

它会产生漂亮的滑块。 现在它看起来像:

 function createSlider(p){ return $("",{ "id":p.id, "class":p.divClass, "min":p.constraint.min, "max":p.constraint.max, "step":p.step, "value":p.curVal, }); } 

但是,由于它是动态创建的,jQuery Mobile在页面加载上完成的所有工作都没有在它上面完成。

有没有办法强制初始化而不在html中编写滑块?

谢谢。

编辑 :我在文档中发现可以使用container.trigger("create"); 但是这还行不通。

EDIT2 :Ok create是解决方案。

根据文档(参见问题中的编辑trigger("create") ,在包含元素上使用trigger("create")可以正常工作。

为了实现这一目标,您还需要记住范围是输入类型而不是标记…

工作方案:

 function createSlider(){ return $("",{ "type":"range", "id":"sl", "min":0, "max":15, "step":1, "value":1, }); } function appendSlider(){ $("#yourdiv").append(createSlider()).trigger("create"); } 

作为旁注,jQuery mobile的文档缺少搜索选项。

尝试在要添加内容的容器上调用.page() 。 或者,将.page()添加到您要返回的内容中也可以。