我做了这样的剧本:
$("#last").bind("change", function() {
var myselect = document.getElementsByTagName("select");
var numselect = myselect.length;
var oldid = "select-" + numselect;
var newidslider = "slider-" + (numselect + 1);
$('#last').attr('name', oldid);
$('#last').attr('id', oldid);
$('#last').selectmenu("refresh", true);
$('#selects').append('<label for="last" class="select">scegli personaggio:</label><select name="last" id="last"><option value="pippo">pippo</option><option value="pluto">pluto</option><option value="paperino">paperino</option><option value="topolino">topolino</option></select><div class="spazio"></div><input type="range" name="' + newidslider + '" id="' + newidslider + '" value="50" min="0" max="100"/>').trigger('create');
});
当我使用app safari mobile或chrome mobile时,它工作正常,但当我“添加到主屏幕”后访问我的网站时,js不起作用! 任何人都知道这个问题!我陷入了这种境地! 感谢您的关注!
答案 0 :(得分:1)
委派活动
$("#last").bind("change" , function() {
应该是
$("body").on("change" ,"#last" , function() {
当事件处理程序关联时,元素在DOM中不可用。将事件委派给静态父代可以解决您的问题..
答案 1 :(得分:0)
我不确定与移动设备或“添加到主屏幕”有什么关系,但该代码中有几行可能会导致问题。我只是在阅读代码,我没有运行它,所以我可能是错的。
$('#last').selectmenu("refresh", true);
这将找不到任何要操作的元素,因为前一行已更改项目的ID,因此它不再是“最后”。
$('#selects').append(.....
正在创建一个ID为“last”的新元素,但如果您希望获得onChange函数,则必须再次附加它。原始的bind()调用仅对运行时ID为“last”的项目进行操作。