2011-09-09 10 views
10

Chcę zastosować zdalnie stan unoszący, najeżdżając kursorem na inny obiekt. Ale chcę nazwać obiekt, który ma aktywowane aktywowanie, a nie być obiektem relacji DOM do elementu, na którym się znajduje.Sposób stosowania: najedź kursorem na element

<style> 
img:hover {border: thin red solid;} 
</style> 

<li id="hover-over-me">Dogs</li> 
<img src="dog.jpg" /> 

nie znalazłem javascript lub jquery metodę, która pozwala zastosować efekt unosić pseudo-klasy do elementu zdalnie (czyli niezależnie od tego rzeczywiście unosił). Czy jest jakiś sposób na zrobienie tego?

Odpowiedz

1

Jeśli masz na myśli konkretnie selektor pseudo CSS :hover, to jeden element tylko może wywołać go na inny, o ile związek może być ustalona w CSS:

http://jsfiddle.net/tFSWt/

Przykład: rodzeństwo:

<span>Sibling </span><img src = "http://dummyimage.com/120x90/f00/fff.png&text=my+image" /> 

img:hover { border: 2px dashed blue; } 
span:hover + img { border: 2px dashed blue; } 

przykład jako przodka/potomka:

<span>Parent 
    <img src = "http://dummyimage.com/120x90/f00/fff.png&text=my+image" /> 
</span> 

img:hover { border: 2px dashed blue; } 
span:hover img { border: 2px dashed blue; } 

W przeciwnym razie trzeba będzie polegać na JavaScript, aby wybrać powiązany element i ustawić styl na rolkach albo stylizacji, lub dodając klasę, która zapewnia odpowiedni styl.

+2

więc myślę, że krótką odpowiedzią na moje pytanie jest "nie możesz"? : p – Damon

+0

@Damon: Jeśli masz na myśli wywoływanie pseudo selektora CSS ': hover' z JavaScript, to niestety to prawda, nie możesz. Ale * możesz * zdefiniować procedury obsługi zdarzeń myszy w JavaScript i wywołać je. – user113716

+0

tak ... to właśnie miałem na myśli. Wiem o dodawaniu/usuwaniu zajęć, ale miałem nadzieję, że będę mógł to zrobić w bardziej bezpośredni sposób. – Damon

3

http://sandbox.phpcode.eu/g/3304b

<style> 
img:hover,img.hovered {border: 5px red solid;} 
</style> 
<ul> 
    <li id="hover-over-me">Dogs</li> 
</ul> 
<img src="http://4.bp.blogspot.com/_7VyEDKFMA2U/TOX9ZL7KRPI/AAAAAAAAACM/-XSoYjePBPk/s1600/cute-puppy-dog-wallpapers.jpg" /> 
<script> 
$("li").mouseenter(function(){ 
    $("img").addClass('hovered'); 
}); 

$("li").mouseout(function(){ 
    $("img").removeClass('hovered'); 
}); 


</script> 
+2

To nie zadziała: http://jsfiddle.net/ekqCC/1/ –

+3

To spowoduje, że * nie * wywoła kursor CSS. – user113716

+2

Dlaczego ludzie nawet głosują na to? –

Powiązane problemy