2

メニュータブのフッターをクリックしたときにフィールドセットタグに追加されたチェックボックスの数を更新しようとしています。最初のタブへのアクセスは問題ありませんが、その後、すべてのチェックボックスをチェックできなくなります。コードを何度か変更しましたが、機能しません。チェックできる場合もありますが、スタイルは適用されません。チェックできない場合もありますが、スタイルが適用されています。

私は試しましたが、どれも機能していません.controlgroup('refresh');.checkboxradio("refresh");同様の質問のほとんどを見てきましたが、この問題の解決には役立っていません。コードを間違った場所に置くことはできますか?

コンソールの場合.checkboxradio("refresh");、常にこのエラーをログに記録してください。初期化の前に、checkboxradio のメソッドを呼び出すことはできません。メソッドを呼び出そうとしました'refresh'

これは私のオリジナルの HTML と JS です

<div data-role="content" data-theme="a">
     <div id='delete_wrapper'>
          <a href="#" data-role="button" id='deleteButton'>Delete</a>
          <a href="#" data-role="button" id='deleteAllButton'>Delete All</a>
     </div>
     <fieldset data-role="controlgroup" id='checkboxes_wrapper2'>

     </fieldset>
 </div>

そして、これは私のJSです

runfirstDelete = true;
$('.delete_tab').click(function(){
$("#checkboxes_wrapper2").children().remove();
    var dataIndex;
    var dataName;
    for(var i in localStorage)
    {   
        dataIndex = JSON.parse(localStorage[i]).index;
        dataName = JSON.parse(localStorage[i]).name;

        if(runfirstDelete){ // This for 1st time visit, It's working okay.
            $("#checkboxes_wrapper2").append('<input type="checkbox" name="'+dataIndex+'" id="checkbox'+dataIndex+'" value="'+dataIndex+'"/><label for="checkbox'+dataIndex+'">'+dataName+'</label>');
        }
        else{ //if not, trying to insert embedded style in element
            $('#checkboxes_wrapper2').append('<div class="ui-checkbox"><input type="checkbox" value="'+dataIndex+'" name="'+dataIndex+'" id="checkbox'+dataIndex+'"><label for="checkbox'+dataIndex+'" data-corners="true" data-shadow="false" data-iconshadow="true" data-wrapperels="span" data-icon="checkbox-off" data-theme="a" data-mini="false" class="ui-checkbox-off ui-btn ui-btn-up-a ui-btn-corner-all ui-fullsize ui-btn-icon-left ui-btn-up-a"><span class="ui-btn-inner"><span class="ui-btn-text">'+dataName+'</span><span class="ui-icon ui-icon-checkbox-off ui-icon-shadow">&nbsp;</span></span></label></div>');
        }
    }
    runfirstDelete = false; //Then indicate that it's not 1st click on tab
});
4

1 に答える 1

5

新しい要素を追加しているので、それらを拡張するための jQuery Mobile ウィジェットはありません。そのため、それらのrefresh()メソッドを呼び出そうとすると実際に失敗します。

jQuery Mobile に新しいマークアップで「追いつく」ように指示する簡単な方法はcreate、コンテナー要素でイベントをトリガーすることです。

$("#checkboxes_wrapper2").trigger("create");
于 2013-03-13T11:32:25.487 に答える