2010-09-19 6 views
15

IE7 e IE8 no me dejan de empalme mi array (Safari, Chrome, Firefox trabajo):matriz de empalme lanza de error en el IE

 lzaCreateAd1.weatherArray = new Array(); 
     var jWeatherIcon = $('.weatherIcon'); 

     jWeatherIcon.bind('click', function(){ 
      var targetID = $(this).attr('id') + 'Box', 
      idVal = targetID.substr(5,1); 

      var jTargetBox = $('#'+targetID); 

      if (jTargetBox.hasClass('inactive')) { 
       jTargetBox.removeClass('inactive').addClass('active'); 
       lzaCreateAd1.weatherArray.push(idVal); 
      } else if (jTargetBox.hasClass('active')) { 
       jTargetBox.removeClass('active').addClass('inactive'); 
       lzaCreateAd1.weatherArray.splice(lzaCreateAd1.weatherArray.indexOf(idVal),1); 
      } 
     }); 

IE lanza el siguiente error: "Objeto no admite esta propiedad o método" para esta línea:

lzaCreateAd1.weatherArray.splice(lzaCreateAd1.weatherArray.indexOf(idVal),1);

¿Alguna idea? U otras formas de eliminar un elemento de matriz por valor? ¡Gracias por adelantado!

Respuesta

29

Array.indexOf no es compatible con Internet Explorer anterior a la versión 9. Puede utilizar la función de utilidad $.inArray del jQuery, o cualquier otra cuña/polyfill desea en su lugar.

lzaCreateAd1.weatherArray.splice($.inArray(idVal, lzaCreateAd1.weatherArray) ,1); 

Ver: http://api.jquery.com/jQuery.inArray/

+0

Gracias Yi Jiang! – Kyle

+9

Sin embargo, otra razón por la cual IE es la perdición de la existencia de muchos desarrolladores web. ¡Gracias! – exoboy

Cuestiones relacionadas