我有一个使用jQuery构建的应用程序(并使用各种jQuery-UI工具)。
出于某种原因,我必须将其移植到智能手机/平板电脑,并决定使用jQuery Mobile(为了尽量减少更改次数)。
在我的vanilla应用程序中,我根据用户的交互情况动态创建了页面的一些元素。
例如,可以像这样创建一个滑块(p是一个带有一串参数的对象):
function createSlider(p){
return $("<div/>",{
"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 $("<range/>",{
"id":p.id,
"class":p.divClass,
"min":p.constraint.min,
"max":p.constraint.max,
"step":p.step,
"value":p.curVal,
});
}
但是因为它是动态创建的,所以jQuery Mobile在页面加载上完成的所有工作都没有在它上面完成。
有没有办法强制初始化而不在html中编写滑块?
感谢。
编辑:我在doc中发现可以使用container.trigger("create");
来实现
但是这还行不通。
EDIT2 :Ok create是解决方案。
答案 0 :(得分:4)
根据文档(请参阅问题中的编辑),在包含元素上使用trigger("create")
可以正常工作。
要做到这一点,你还需要记住范围是输入类型而不是标记......
工作解决方案:
function createSlider(){
return $("<input/>",{
"type":"range",
"id":"sl",
"min":0,
"max":15,
"step":1,
"value":1,
});
}
function appendSlider(){
$("#yourdiv").append(createSlider()).trigger("create");
}
作为旁注,jQuery mobile的文档缺少搜索选项。
答案 1 :(得分:0)
尝试在正在添加内容的容器上调用.page()
。或者,将.page()
添加到您要返回的内容中也可能有效。