2012-09-13 19 views
5

Vorrei cambiare solo un genitore quando passa il mouse sui tag <p>. Il codice è:jquery come modificare un solo genitore al passaggio del mouse su un passaggio del mouse

$('.hover').each(function() { 
    $(this).parent().hover(function() { 
      $('p').parent(this).css('font-size','30px'); 
     }, function() { 
      $('p').parent(this).css('font-size','10px'); 
    }); 
}); 

e l'HTML è:

<ul> 
     <li>1 <p class='hover'>xxxx</p></li> 
     <li>2 <p class='hover'>yyyy</p></li> 
    </ul> 

Quando con il mouse sopra "xxxx", che voglio "1" e "xxxx" per cambiare, ma "2" e "yyyy" non fare nulla e quando passo il mouse su "yyyy", voglio "2" e "yyyy" per cambiare ma "1" e "xxxx" non fanno nulla.

Sono nuovo di jQuery.

+0

grazie per aiutarmi ma non è proprio quello che voglio. ho fatto re-code e postare di nuovo qui. [link] (http://stackoverflow.com/questions/12418179/jquery-how-to-change-only-one-parent-closeset-a-tag-on-hover) Grazie mille – ChooChu

+0

La prossima volta, usa il pulsante "modifica" sotto la tua domanda. Questo ti permette di modificare la tua domanda. Non devi creare una nuova domanda per ogni modifica. In questo momento abbiamo una domanda aperta con più risposte legit che è molto deludente se qualcuno capita di finire qui con la stessa domanda. –

risposta

0

Si potrebbe utilizzare

$('p').closest('li').css('font-size','30px'); 
6
$('p.hover').parent().hover(function() { 
    $(this).children('p').css('font-size','30px'); 
}, function() { 
    $(this).children('p').css('font-size','10px'); 
}); 

Non dovete utilizzare un ogni ciclo per aggiungere i aleggia. Se hai selezionato più elementi, applicherà l'evento su tutti gli elementi.

Detto ciò, ho leggermente ottimizzato il codice.

Ho aggiunto il passaggio del mouse sul genitore del paragrafo, proprio come hai fatto tu. Usando $(this) nella callback dell'evento posso effettivamente selezionare l'elemento hovered e applicare gli stili su quell'elemento.

Perché voglio che la dimensione del carattere si applichi al paragrafo, prima seleziono il bambino desiderato.


Riassumendo sopra up:

  • trovare gli elementi paragrafi ($('p.hover'))
  • ottenerlo del genitore, l'elemento li (.parent())
  • Applicare l'evento hover (.hover())

Una volta chiamato l'evento hover:

  • Get elemento corrente ($(this))
  • Trova il punto interno (.children('p'))
  • applicare stili
  • Parent
0

di <p> nel tuo caso è <li>. Avete bisogno di:

$('.hover').parent().parent().hover(
    function() { 
     $(this).css('font-size','30px'); 
    }, function() { 
     $(this).css('font-size','10px'); 
    }); 
Problemi correlati