pyz Posted November 23, 2009 Report Posted November 23, 2009 (edited) Bueno yo se que aqui no es un foro de coding pero bueno estoy con el clavo y quiero saber que f-uck es. ojo HTML <ul> <li>uno</li> <li>dos</li> <li>tres</li> <li>cuatro</li> <li>cinco</li> </ul> CSS ul{ display:block; overflow:hidden; padding:0px; margin:100px 200px; } ul li{ list-style-type:none; float:left; background-color:#666; margin-right:10px; position:relative; top:0px; left:0px; padding:5px 10px; } JQUERY jQuery.fn.extend({ AnimateMenu:function(){ var total_widths = 0; var speed = 1000; $(this).children().each(function(){ total_widths += $(this).outerWidth(); total_widths += parseInt($(this).css("margin-left"),10); total_widths += parseInt($(this).css("margin-right"),10); $(this).css({left:"-"+(total_widths)+"px"}); }); $(this).children().each(function(){ $(this).animate({left:"0px"},speed); }); } }); jQuery(document).ready(function($){ $("ul").AnimateMenu(); }); El problema es con IE7 u 8, aparece un error en el codigo de jquery, he googleado esto pero la solucion que sugieren en un par de sitios no me sirven... La linea en mi code que genera el error es $(this).css({left:"-"+(total_widths)+"px"}); Ahora bien si alguien conoce un metodo que no sea css para setear los left pues que lo posteen Edited November 23, 2009 by pyz
xG.SGT Posted November 23, 2009 Report Posted November 23, 2009 (edited) Esta linea: $(this).css({left:"-"+(total_widths)+"px"}); da error pq el valor de "total_widths" es un "NaN" y eso en IE termina concatenandose mal. Creo q es un error de Logica mas de compatibilidad en browsers. Edited November 23, 2009 by x[G]SGT
b52|Hunhau Posted November 23, 2009 Report Posted November 23, 2009 En realidad mi conocimiento de jquery y de javascript en general es muuuy limitado, pero viendo el código veo que hacer un parseInt de un par de atributos, y uno de ellos no está definido en su css (margin-left). En los lenguajes con los que acostumbro hacer cosas, eso posiblemente tire un NPE o alguna excepción de cast o algo así. Podría ser por eso? Fuerte batazo, pero bueno.
pyz Posted November 23, 2009 Author Report Posted November 23, 2009 Gracias a ambos, aqui la solucion! jQuery.fn.extend({ AnimateMenu:function(){ var total_widths = 0; var speed = 1000; $(this).children().each(function(){ total_widths += $(this).outerWidth(); if(!isNaN(parseInt($(this).css("margin-left")))) total_widths += parseInt($(this).css("margin-left"),10); if(!isNaN(parseInt($(this).css("margin-right")))) total_widths += parseInt($(this).css("margin-right"),10); $(this).css({left:"-"+(total_widths)+"px"}); }); $(this).children().each(function(){ $(this).animate({left:"0px"},speed); }); } }); El problema estaba en que los atributos css de margin-left y margin right no estaban definidos, en firefox esto devuelve 0 pero en IE devuelve auto :S Para evitar esto puse ese par de ifs para evitar que devuelva nah el fvck IE Era tan simple que no lo pense, y yo ya estaba empezando a poner el traking para un ticket SOLVED ◄ Raven ► 1
xG.SGT Posted November 23, 2009 Report Posted November 23, 2009 pyz y mi +1?? te salvo el brete de 3 dias y ni un +1!!!! q codo!!!
H Posted November 23, 2009 Report Posted November 23, 2009 (edited) en realidad es como vez las cosas en javascript hacer esto element.style.margin-left = "10px"; es ilegal que es lo que tu hacias, lo correcto es element.style.marginLeft = "10px"; el mismo error q te corregi con el z-index a zIndenx y aunque Jquery como tal hace algunas conversiones magicas pues.. nunca me fio lo puedes probar en este mismo post... en firebug document.getElementById("rep_post_279196").style.margin-left; retorna: ReferenceError: left is not defined ahora document.getElementById("rep_post_279196").style.marginLeft; retorna: "" porque dicho elemento no tiene margen, parseInt(""), o parseInt(undefined); retorna NaN en FF e IE Edited November 23, 2009 by H
pyz Posted November 23, 2009 Author Report Posted November 23, 2009 LoL bueno si encuentro donde ponerle un +1 se lo pongo pa nivelarle la reputacion de -7 que ya tenes xD
xG.SGT Posted November 23, 2009 Report Posted November 23, 2009 Pyz, dale al boton de + a mi post!!! Pura vida!! pyz 1
pyz Posted November 23, 2009 Author Report Posted November 23, 2009 (edited) SGT' date='23 November 2009 - 02:59 PM' timestamp='1259009992' post='279218']Pyz, dale al boton de + a mi post!!! Pura vida!! Mae ahi le di a este ultimo post que pusiste y no al de la respuesta pero para el caso es lo mismo! yo quiero punticos entonces hahahaha A H no le doy porque es Gay! Edited November 23, 2009 by pyz
xG.SGT Posted November 23, 2009 Report Posted November 23, 2009 Excelente Pyz! El q quiera, Codeo por +1s!!!!
H Posted November 23, 2009 Report Posted November 23, 2009 vez mae voy a tener que partirte la mandarina en gajos en SFIV, por menospreciar mi poder XD
kLorD Posted November 24, 2009 Report Posted November 24, 2009 (edited) solo queria agregar que para código, el editor de ipb permite dar estilo, así por ejemplo esto: jQuery.fn.extend({AnimateMenu:function(){ var total_widths = 0; var speed = 1000; $(this).children().each(function(){ total_widths += $(this).outerWidth(); if(!isNaN(parseInt($(this).css("margin-left")))) total_widths += parseInt($(this).css("margin-left"),10); if(!isNaN(parseInt($(this).css("margin-right")))) total_widths += parseInt($(this).css("margin-right"),10); $(this).css({left:"-"+(total_widths)+"px"}); }); $(this).children().each(function(){ $(this).animate({left:"0px"},speed); }); } }); podría mostrarse así: jQuery.fn.extend({ AnimateMenu:function(){ var total_widths = 0; var speed = 1000; $(this).children().each(function(){ total_widths += $(this).outerWidth(); if(!isNaN(parseInt($(this).css("margin-left")))) total_widths += parseInt($(this).css("margin-left"),10); if(!isNaN(parseInt($(this).css("margin-right")))) total_widths += parseInt($(this).css("margin-right"),10); $(this).css({left:"-"+(total_widths)+"px"}); }); $(this).children().each(function(){ $(this).animate({left:"0px"},speed); }); } }); manteniendo de esta forma la estructura(el código que puse no tenía estructura, solo es para mostrar que se mantienen los espacios) y dando un estilo más legible la etiqueta es , tambien hay otras opciones para SQL, HTML, XML, etc Desde el menú se pueden seleccionar desde la opción marcada en rojo: Edited November 24, 2009 by DrKrz CraToS and Sky 2
Recommended Posts