2016-05-26 10 views
0

Warum würde der Unterschied zwischen diesen beiden Codezeilen einen Fehler verursachen, der dazu führt, dass Jquery endlos in iOS (Safari und Chrome) läuft? Die Schleife ist in keinem anderen Browser aufgetreten.jQuery Looping Bug in iOS

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

vs

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

Wenn wir nach Klasse gezielt und benennen nicht die Schleife Bug weg Attribut ging. Irgendwelche Ideen oder Erklärungen?

+1

Was ist Ihre Schleife? –

+3

Beachten Sie, dass '$ ('.loadingTime')' oder '$ ('[name =" loadingTime "]') niemals' undefiniert' ist, jQuery gibt immer ein Objekt zurück. – Teemu

+1

Um festzustellen, ob ein jQuery-Selektor mit irgendetwas übereinstimmt, überprüfen Sie seine Länge: 'if ($ ('[name =" loadingTime "]'). Length! = 0)' – Barmar

Antwort

1

Bei weiterer Untersuchung wurde der Fehler in einem anderen Teil des Codes entdeckt. Hier ist, was passiert ist:

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

in

var settimer = $('[name="loadingTime]').val(); 

wir einen Schlusskurs nach loadingTime verpasst! was die js zurückgegeben als undefiniert und iOS nicht ordnungsgemäß behandelt so var settimer wurde nicht auf Null gesetzt, so immer wenn diese Funktion loadInterval aufgerufen wurde, war es undefiniert und wir überprüften, ob wir auf undefined oder nicht laden mussten . in unserem Fall war es nicht und fuhr fort, immer und immer wieder zu laden, immer eine undefinierte Antwort, aber ohne einen Fehler. Ich denke ...