0

私は無知です。

私の Jquery Mobile Plugin では、次のように宣言しています。

var $currentEntry = $.mobile.urlHistory.stack[$.mobile.urlHistory.activeIndex].url;
    $activePage = $('div:jqmData(url="'+ $currentEntry +'")');

そこで、アクティブなページの URL を取得し、それを使用して $activePage オブジェクトを作成します。

これはデスクトップでは問題なく動作しますが、私の iPad (iOS3.3) では、$currentEntryは正しく定義されていますが、$activePageundefinedです。

質問:
これにはどのような理由が考えられますか?

これを 10 秒のタイムアウトでラップしても同じ結果が得られるため、競合状態を除外できます。また、それぞれのページを直接コンソールしてdata-urlをクエリすると、正しい値が表示されます。では、なぜ上記の方法でも iOS で undefined が表示されるのですか?

 undefined

他の場所で正しく動作している間?

ヒントをありがとう!

編集:
要素は動的になりますが、次のようにセットアップでページを直接コンソールできます。

console.log( $('div:jqmData(wrapper="true").ui-page-active').attr('id') );
console.log( $('div:jqmData(wrapper="true").ui-page-active').attr('data-url') );

どちらも正しいiddata-urlを返すため、要素が存在する必要があります。

EDIT2 :
属性data-urlを照会して、正しい値を取得できます。ただし、次のようにこの属性を使用して選択することはできません。

$('div[data-url="'+$currentEntry+'"]').length

これは私に0を与えます

4

1 に答える 1

3

私は盲目的な推測であることを認めますが、試してみてください:

$activePage = $('div').filter(function(){return $(this).jqmData('url') === $currentEntry})

ところで、セマンティクスのために、jQueryオブジェクトでない場合、「$ currentEntry」をドル記号で始めるべきではないと思います。

于 2012-05-27T21:58:44.347 に答える