0

我一无所知。

在我的 Jquery 移动插件中,我声明:

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

同时在其他地方正常工作?

感谢您的任何提示!

编辑
元素将是动态的,但我可以直接在我的设置中对页面进行控制台,如下所示:

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

顺便说一句,就语义而言,我认为“$currentEntry”如果不是 jQuery 对象,则不应以美元符号开头。

于 2012-05-27T21:58:44.347 回答