是否可以使用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()
添加到您要返回的内容中也可以。