2013-05-31 18 views
5

Ho una funzione mouseover che dovrebbe aggiungere una classe al mio elemento viewport, ma ottengo un errore in firebug quando eseguo il mouseover: TypeError: jQuery (...). Addclass non è una funzione .Addclass non è una funzione in jQuery

l'HTML è:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="<?php bloginfo('charset'); ?>" /> 
<title><?php wp_title('|','true','right'); ?><?php bloginfo('name'); ?></title> 
<meta name="viewport" content="width=device-width" /> 
<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo('stylesheet_url' ); ?>" /> 
<?php wp_head(); ?> 
</head> 
<body <?php body_class($class); ?>> 
<header> 
<div class="main-logo"> 
    <div id="site-title"> 

    </div><!--.site-title--> 
</div><!--main-logo--> 

<div class="header-right"> 
</div><!--header-right--> 
</header> 

<nav class="main"> 
<?php wp_nav_menu(array('theme_location' => 'main-menu')); ?> 
</nav> 

<div class="viewport"> 
<script type="text/javascript"><!--//--><![CDATA[//><!-- 
jQuery(document).ready(function(jQuery){ 
jQuery('nav .home a').mouseover(function() 
    { 
    jQuery('.viewport').addclass('.viewporthome'); 
    }); 
}); 
//--><!]]></script> 
</div> 
</div> 

Gli stili correlati sono:

.viewport 
    { 
height: 400px; 
width: 400px; 
position: relative; 
top: -90px; 
margin: 0 auto; 

} 

.viewporthome 
{ 
background-image: url('images/Screen2.png'); 
background-repeat: no-repeat; 
background-position: center; 
background-attachment: relative; 

} 

Il file JS è:

 var hoverhome = 'url("images/Screen2.png")'; 
    var empty = ''; 
    var success = 'SUCCESS!'; 
    //home 
    jQuery('nav .home a').hover(function() 
    { 
    jQuery('.viewport').css('background-image', hoverhome); 

    }); 
    jQuery('nav .home a').mouseout(function() 
    {  
     jQuery('.viewport').css('background-image', empty); 
    }); 

risposta

13

Prova questo:

jQuery('.viewport').addClass('viewporthome'); 

addClass bisogno di una "C" maiuscola.

Inoltre, quando si aggiunge una classe, non è necessario inserire "." nella stringa o la tua classe sarà ..viewporthome.

+0

GRANDE SUCCESSO! "Inoltre, quando aggiungi una classe, non devi inserire il". "Nella stringa o la tua classe sarà ..viewporthome." Funziona perfettamente, grazie mille. – Chris

5

Uso addClass invece di addclass

+0

Javascript è molto, molto, molto – PitaJ

+6

no, si tratta solo di maiuscole e minuscole :) –

+0

Che ha funzionato case-sensitive , grazie. Qualcuno di voi capisce perché l'immagine di sfondo non verrà visualizzata ora che dovrebbe aggiungere quella classe? – Chris

1

Rimuovere dot in più e utilizzare addClass() non addClass()

jQuery('.viewport').addClass('viewporthome'); 
+0

Ciò ha rimosso l'errore, ma l'immagine non viene ancora visualizzata – Chris

+0

Beh, è ​​la stessa domanda di quella originale? –

+0

Non sono sicuro quale intendi con il mio originale, ma con questo codice immagino che la classe aggiunta faccia apparire l'immagine Screen2 nel div viewport quando topo il mouse sul pulsante home. – Chris

0

Controlla la tua capitalizzazione. Il metodo addClass ha una "C" maiuscola.

jQuery addClass Method

Se il fermo immagine non viene visualizzata è probabilmente un problema con il percorso relativo alla vostra immagine. Se la cartella delle immagini non si trova nella stessa directory del file Javascript, potrebbe essere necessario modificare il percorso. Non posso dire esattamente cosa avresti bisogno di fare senza conoscere la struttura della tua directory.

+0

Struttura: C:/wamp/www/sitename/wordpress /wp-content/themes/mytheme/images/Screen2.png – Chris

2

Aggiunta di una classe:

$(".something").click(function(){ 
    $(this).addClass("style"); 
}); 

Rimozione di una classe:

$(".something").click(function(){ 
    $(this).removeClass("style"); 
}); 
+0

Ho avuto il problema quando ho provato 'this.addClass ('class-name');' usando '$ (this) .addClass ('class-name')' mi ha aiutato grazie. –