4

jQueryモバイルを使用してアプリケーションを作成し、そのメニューとページをwordpress throw jsonpからロードしています。collapsibleset と listview の形式でメニューを読み込んでいますが、エラーが発生し続けます。このコードで折りたたみ可能なセットを更新しようとすると

$(".childnev").html(list);
$.mobile.loading( 'hide');
$('.popupmenu').slideToggle('slow');

$(".childnev").collapsibleset('refresh');

$(".childsublist").listview().listview('refresh');

それは私にこのエラーを与えます

Error: cannot call methods on collapsibleset prior to initialization;
attempted to call method 'refresh'

そして、このコードでリフレッシュしようとすると。

$(".childnev").html(list);
$.mobile.loading( 'hide');
$('.popupmenu').slideToggle('slow');

$(".childnev").collapsibleset();
$(".childnev").collapsibleset('refresh');

$(".childsublist").listview().listview('refresh');

それは再び私にこのエラーを与えます

TypeError: o[0] is undefined

私は何かを見逃していますか、何か間違っていますか?

4

4 に答える 4

6

これを追加するだけです

デモ

$('[data-role=collapsible-set]').collapsibleset().trigger('create');

[data-role=listview]これにより、[data-role=collapsible-set]現在のページ (アクティブなページ) のマークアップが強化されます。$('[data-role=collapsible-set]')任意のセレクターに置き換えることができます。


ノート)

  • あなたのコメントのフィドルに基づいて、多くの間違いがあります。.readyjQuery Mobile では使用しないでください。また、.liveは使用されなくなったため、 に置き換え.liveます.on

  • 拡張メソッドrefreshcreatepagecreateおよびupdatelayoutは、現在のページ (アクティブなページ -$.mobile.activePage ) に jQuery Mobile スタイルを再適用するために使用することを意図しています。.page()DOM で動的に作成されたページの場合pagecreate、ページとそのコンテンツは DOM に配置されると拡張されるため、拡張方法を使用する必要はありません。

于 2013-06-29T10:47:29.197 に答える
1

折りたたみ可能な se をクラスに動的に追加しているため、作成されていないため更新できません。作成する必要があります。

使用する必要があります

$(".childnev").html(list).trigger('create');
于 2013-06-29T09:50:33.443 に答える
1

折りたたみ可能なセットが初期化されていません。createhtml を置き換えるので、要素でトリガーする必要があります。

交換$(".childnev").collapsibleset('refresh');

$(".childnev").trigger('create');

refresh メソッドは、要素を動的に追加、削除する場合にのみ使用されます。

于 2013-06-29T09:50:56.413 に答える
0

価値があるのは、.html() を使用して既存の折りたたみ可能な div のコンテンツを変更しようとしたときに問題が発生したことです。それは何があっても正しくレンダリングされません。しかし、replaceWith() を使用してその div を置き換える (その 'id もコピーする) と、trigger('create') はうまく機能しました。

于 2016-04-10T03:12:11.327 に答える