Javascript 可以使用jQuery Mobile动态创建元素吗?
我有一个使用jQuery(以及各种jQuery UI工具)构建的应用程序 出于某种原因,我不得不将其移植到智能手机/平板电脑上,并决定使用jQuery Mobile(以尽量减少更改次数) 在我的香草应用程序中,我根据用户交互动态创建了页面的一些元素 例如,可以这样创建一个滑块(p是一个具有一组参数的对象):Javascript 可以使用jQuery Mobile动态创建元素吗?,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,我有一个使用jQuery(以及各种jQuery UI工具)构建的应用程序 出于某种原因,我不得不将其移植到智能手机/平板电脑上,并决定使用jQuery Mobile(以尽量减少更改次数) 在我的香草应用程序中,我根据用户交互动态创建了页面的一些元素 例如,可以这样创建一个滑块(p是一个具有一组参数的对象): 函数createSlider(p){ 返回$(“”){ “id”:p.id, “阶级”:p.divClass, }).滑块({ “方向”:p.align, “min”:p.constrain
函数createSlider(p){
返回$(“”){
“id”:p.id,
“阶级”:p.divClass,
}).滑块({
“方向”:p.align,
“min”:p.constraint.min,
“最大”:p.constraint.max,
“步骤”:p.step,
“价值”:p.curVal,
“动画”:“正常”
/*还有一些事件处理,但这并不重要*/
});
}
它将产生一个好看的滑块。现在看来:
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,
});
}
函数createSlider(p){
返回$(“”){
“id”:p.id,
“阶级”:p.divClass,
“min”:p.constraint.min,
“最大”:p.constraint.max,
“步骤”:p.step,
“价值”:p.curVal,
});
}
但由于它是动态创建的,jQuery Mobile在页面加载时所做的所有事情都不是在它上面完成的
有没有一种方法可以在不在html中写入滑块的情况下强制进行初始化
谢谢
编辑:我在中发现,可以使用container.trigger(“创建”)来实现它代码>
然而,这还不起作用
EDIT2:确定创建是解决方案。尝试在要添加内容的容器上调用.page()
。或者,将.page()
添加到您返回的内容也可能有效。根据文档(请参见问题中的编辑),在包含元素上使用触发器(“创建”)
要使其工作,您还需要记住范围是一个输入类型,而不是一个标记
工作解决方案:
function createSlider(){
return $("<input/>",{
"type":"range",
"id":"sl",
"min":0,
"max":15,
"step":1,
"value":1,
});
}
function appendSlider(){
$("#yourdiv").append(createSlider()).trigger("create");
}
函数createSlider(){
返回$(“”){
“类型”:“范围”,
“id”:“sl”,
“min”:0,
“最大”:15,
"步骤":一,,
“价值”:1,
});
}
函数appendSlider(){
$(“#yourdiv”).append(createSlider()).trigger(“create”);
}
作为旁注,jQuery mobile的文档缺少搜索选项。这不起作用。我还尝试了触发(“创建”);没有任何成功。这对我不起作用。如果我使用.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");
}