1

我做了一个这样的脚本:

$("#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 不起作用!有谁知道这个问题!我被困在这种情况下!感谢关注!

4

2 回答 2

1

委托活动

$("#last").bind("change" , function() {

应该是

$("body").on("change" ,"#last" , function() {

当事件处理程序关联时,该元素在 DOM 中不可用。将事件委托给静态父级应该可以解决您的问题。

于 2012-12-03T16:47:20.383 回答
0

我不确定与移动设备或“添加到主屏幕”有什么关系,但该代码中有几行可能会导致问题。我只是在阅读代码,我没有运行它,所以我可能是错的。

$('#last').selectmenu("refresh", true);

这将找不到任何要操作的元素,因为上一行已经更改了项目的 ID,因此它不再是“最后一个”。

$('#selects').append(.....

正在创建一个 ID 为“last”的新元素,但如果您希望它也获得 onChange 函数,则必须再次附加它。最初的 bind() 调用只对运行时 ID 为“last”的项目进行操作。

于 2012-12-03T17:03:34.290 回答