我一无所知。
在我的 Jquery Mobile 插件中我声明:
var $currentEntry = $.mobile.urlHistory.stack[$.mobile.urlHistory.activeIndex].url;
$activePage = $('div:jqmData(url="'+ $currentEntry +'")');
因此,我获取事件页面的 url 并使用它来构造 $activePage 对象。
这在桌面上工作正常,但在我的 iPad (iOS3.3) 上,$currentEntry 定义正确,但 $activePage 未定义.
问题:
造成这种情况的原因是什么?
您可以排除竞争条件,因为将其包装在 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') );
两者都返回正确的id和data-url,因此元素必须存在。
编辑2:
我可以查询属性data-url,它给了我正确的值。但是,我无法像这样选择使用此属性:
$('div[data-url="'+$currentEntry+'"]').length
这给了我0
最佳答案
我承认我是盲目猜测,但你应该尝试:
$activePage = $('div').filter(function(){return $(this).jqmData('url') === $currentEntry})
顺便说一句,就语义而言,我认为“$currentEntry”如果不是 jQuery 对象,就不应该以美元符号开头。
关于javascript - 变量在 iPad 上未定义与在浏览器中定义的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10777507/