2011-11-13 11 views
7

relacionada, pero no una solución: jQuery issue - #<an Object> has no method'efecto' funciona bien en jsFiddle pero no en vivo código ([object Object] no tiene 'efecto' método)

estoy recibiendo un error Object [object Object] has no method 'effect' cuando intento use la función effect en jquery (doc http://docs.jquery.com/UI/Effects/Highlight). Está funcionando bien en JSFiddle pero se produce un error cuando ejecuto el sitio en Chrome o IE. Se muestra el div pero la llamada de efecto arroja un error.

versión en vivo se puede encontrar aquí: http://jsfiddle.net/jcollum/HK625/

HTML

<a id=showHowThisWorks >How does this all work?</a>  
<div id="howThisWorks" style="display: none; ">  
    <p>It works fine</p> 
</div> 

Y esto CoffeeScript:

$(document).ready -> 
    $('#howThisWorks').hide() 

    $('#showHowThisWorks').click -> 
    $div = $('#howThisWorks') 
    $div.toggle(); 
    $div.effect("highlight", {}, 10000) 
    return 

    return 

¿Cuál es la siguiente con JS:

$(document).ready(function() { 
    $('#howThisWorks').hide(); 
    $('#showHowThisWorks').click(function() { 
     var $div; 
     $div = $('#howThisWorks'); 
     $div.toggle(); 
     $div.effect("highlight", {}, 6000); 
    }); 
    }); 

Intenté hacer el selector $ div a jquery en esa línea en lugar de usar la variable. Intenté incluir $ div en $(). Todavía estoy recibiendo el error en la versión real de la página. Mismo resultado en Chrome e IE9. Claramente, me falta algo acerca de cómo se comportan los objetos jquery.

+0

¿Funciona 'toggle()'? En otras palabras, si elimina la llamada 'effect()', ¿funciona? –

+0

@Dave yes, alternar funciona bien – jcollum

+0

Tenía la esperanza de que acabara de perder 'jQuery.fx.off', así que intenté configurar eso en falso pero no ir. Usando '$ div.fadeToggle (400)' hice lo que quería, pero todavía no puedo entender por qué 'effect' no funcionará. – jcollum

Respuesta

10

creo que jQuery UI no está siendo desplegado a nivel local: el registro de entrada Firebug/cromo, etc. para verificar.

.toggle() es parte de core jQuery, .effect() es parte de jQuery UI: para que esto no funcione, jQuery UI no debe estar presente.

+1

+1. Todos los objetos jQuery tienen los mismos métodos adjuntos, por lo que la única explicación del error que jcollum está viendo es que ningún complemento ha definido el método 'effect' para jQuery. –

+0

Parece que eso fue todo. No está claro en los documentos en qué biblioteca está ... además, si elimina la referencia a jquery ui (que está incluida por defecto) en jsfiddle, el código sigue funcionando sin errores que pueda ver (incluso después de presionar Actualizar) Blech. – jcollum

+0

Gracias por la asistencia. – jcollum

Cuestiones relacionadas