2012-09-13 15 views
5

Chciałbym zmienić tylko jednego rodzica po najechaniu na tagi <p>. Kod jest:jquery, jak zmienić tylko jednego rodzica na hover

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

i HTML jest:

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

Kiedy unoszą się nad "xxxx" chcę "1" i "xxxx", aby zmienić, ale "2" i "yyyy" nic nie rób, a gdy ustawię kursor nad "rrrr", chcę zmienić "2" i "rrrr", ale "1" i "xxxx" nic nie rób.

Jestem nowy w jQuery.

+0

dziękuję, że mi pomogłeś, ale tak naprawdę nie jest to, czego chcę. Zrobiłem to ponownie i ponownie opublikowałem tutaj. [link] (http://stackoverflow.com/questions/12418179/jquery-how-to-change-only-one-parent-closeset-a-tag-on-hover) Dziękuję bardzo – ChooChu

+0

Następnym razem użyj przycisk "edytuj" pod swoim pytaniem. Dzięki temu możesz zmodyfikować swoje pytanie. Nie musisz tworzyć nowego pytania dla każdej edycji. W tej chwili mamy otwarte pytanie z wieloma uzasadnionymi odpowiedziami, co jest bardzo rozczarowujące, jeśli ktoś trafi tutaj z tym samym pytaniem. –

Odpowiedz

0

Można użyć

$('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'); 
}); 

Nie muszą korzystać z każdej pętli dodać najechania kursorem. Jeśli wybrano wiele elementów, zastosuje to zdarzenie do wszystkich elementów.

Powiedziawszy to, nieznacznie zoptymalizowałem twój kod.

Dodałem wskaźnik myszy do rodzica akapitu, tak jak Ty. Używając numeru $(this) w wywołaniu zwrotnym zdarzenia, mogę faktycznie wybrać ukryty element i zastosować style tego elementu.

Ponieważ chcę, aby rozmiar czcionki miał zastosowanie do akapitu, najpierw wybieram żądane dziecko.


Podsumowując powyższe up:

  • Znajdź elementy paragrafy ($('p.hover'))
  • Uzyskaj to rodzic, element li (.parent())
  • zastosować zdarzenie najechania (.hover())

Po wywołaniu zdarzenia najeżdżania:

  • Pobierz bieżący element ($(this))
  • Znajdź paragraf wewnętrzną (.children('p'))
  • Zastosuj style
0

dominującą <p> w Twoim przypadku jest <li>. Potrzebujesz:

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