iOS中的jQuery循环错误
问题描述:
为什么这两行代码之间的差异会导致jQuery在iOS(Safari和Chrome)中无限循环的错误?该循环在任何其他浏览器中都不会发生。iOS中的jQuery循环错误
if ($('[name="loadingTime"]') != undefined) {...
VS
if ($('.loadingTime') != undefined) {...
当我们通过类的目标,而不是name属性的循环错误就走开了。任何想法或解释?
答
经过进一步调查发现该错误是在代码的另一部分。事情是这样的:
loadInterval: function() {
var settimer = $('[name="loadingTime]').val();
var interval = setInterval(function() {
if (settimer == 0) {
window.clearInterval(interval);
$('[id^="interstitial-container"]').remove();
};
settimer--;
if (settimer >= 0) {
$('.ncount').text(settimer);
}
}, 1000);
}
在
var settimer = $('[name="loadingTime]').val();
我们错过了结束引号后loadingTime!其中js未定义返回,并且iOS没有正常处理它var settimer未设置为零,因此无论何时该函数调用loadInterval,它都是未定义的,我们检查是否需要基于undefined加载或不加载。在我们的情况下,它不是并继续加载总是得到未定义的响应,但没有错误。我认为...
你的循环是什么? –
请注意,$('。loadingTime')'或'$('[name =“loadingTime”]')'永远不会被定义为'undefined',jQuery总是返回一个对象。 – Teemu
判断jQuery选择器是否匹配任何东西的方法是检查它的长度:'if($('[name =“loadingTime”]').length!= 0)' – Barmar