iOS中的jQuery循环错误

问题描述:

为什么这两行代码之间的差异会导致jQuery在iOS(Safari和Chrome)中无限循环的错误?该循环在任何其他浏览器中都不会发生。iOS中的jQuery循环错误

if ($('[name="loadingTime"]') != undefined) {... 

VS

if ($('.loadingTime') != undefined) {... 

当我们通过类的目标,而不是name属性的循环错误就走开了。任何想法或解释?

+1

你的循环是什么? –

+3

请注意,$('。loadingTime')'或'$('[name =“loadingTime”]')'永远不会被定义为'undefined',jQuery总是返回一个对象。 – Teemu

+1

判断jQuery选择器是否匹配任何东西的方法是检查它的长度:'if($('[name =“loadingTime”]').length!= 0)' – Barmar

经过进一步调查发现该错误是在代码的另一部分。事情是这样的:

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加载或不加载。在我们的情况下,它不是并继续加载总是得到未定义的响应,但没有错误。我认为...