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');
});

アプリサファリモバイルまたはクロームモバイルを使用すると正常に動作しますが、「ホーム画面に追加」した後にサイトにアクセスすると、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が「最後」であったアイテムに対してのみ機能します。

于 2012-12-03T17:03:34.290 に答える