变量在 iPad 上可以未定义与在我的浏览器中定义的原因

Reasons a variable can be undefined on iPad vs. being defined in my Browser?

本文关键字:浏览器 定义 我的 iPad 未定义 变量      更新时间:2023-09-26

我一无所知。

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

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

所以我正在获取活动页面的 url 并使用它来构造一个$activePage对象。

这在桌面上工作正常,但在我的 iPad (iOS3.3) 上,$currentEntry定义正确,但$activePage未定义

问题:
这是什么原因呢?

您可以排除争用条件,因为将其包装在 10 秒超时中仍会产生相同的结果。此外,如果我直接控制台相应的页面并查询它的数据 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') );

两者都返回正确的 id 和数据 url,因此元素必须存在。

编辑2
我可以查询属性数据网址,它给了我正确的值。但是,我不能像这样使用此属性进行选择:

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

这给了我 0

我承认我是盲猜,但你应该尝试:

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

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

相关文章: