2016-07-27 11 views
0

Hallo Freunde erfahren,Vereinfachen JQuery Snippet

Ich mag würde dieses Snippet JQuery vereinfachen, ist es möglich?

Ich versuchte zu vereinfachen, hatte aber keinen Erfolg, was ich tun konnte, war, alle img.main auszuwählen, aber beim Schweben erhielten alle Bilder die Klasse imgHover.

$("#1 button").hover(function() { 
    $("#1 img.main").toggleClass("imgHover"); 
}); 

$("#2 button").hover(function() { 
    $("#2 img.main").toggleClass("imgHover"); 
}); 

$("#3 button").hover(function() { 
    $("#3 img.main").toggleClass("imgHover"); 
}); 

$("#4 button").hover(function() { 
    $("#4 img.main").toggleClass("imgHover"); 
}); 

$("#5 button").hover(function() { 
    $("#5 img.main").toggleClass("imgHover"); 
}); 

$("#6 button").hover(function() { 
    $("#6 img.main").toggleClass("imgHover"); 
}); 

Danke

+3

Wie sieht Ihr HTML aus? – empiric

+1

Wenn Sie den Mauszeiger über die Schaltfläche bewegen, rufen Sie die ID der Schaltfläche ab und wenden Sie Ihre Umschaltklasse auf diese ID an. – ODelibalta

+2

Bitte verwenden Sie nicht nur Ziffern als ID: ['ID und NAME Tokens müssen mit einem Buchstaben beginnen ([A-Za-z]) und können beliebig viele Buchstaben, Ziffern ([0-9]) folgen , Bindestriche ("-"), Unterstriche ("_"), Doppelpunkte (":") und Punkte (".") .'] (https://www.w3.org/TR/html401/types.html # type-name) – empiric

Antwort

1

eine gemeinsame Klasse auf die Elemente hinzufügen, die derzeit die 1,2,3 haben ... IDs z.B.

<div id="1" class="newClassName"> 
    <button>Click me</button> 
    <img class="main" /> 
</div> 

Dann verallgemeinert JQuery wie folgt verwenden:

$(".newClassName button").hover(function() { 
    $(this).closest(".newClassName").find("img.main").toggleClass("imgHover"); 
}); 

Diese Umgebung (newClassName) Element finden, dann innerhalb dass das Bild finden und die Klasse gelten. Auf diese Weise wird JS funktionieren, unabhängig davon, welche Sektion gerade aktiviert ist.

+0

Dies ist genau richtig! Liebe, wie einfach es ist! Cheers Kumpel, das ist, wo ich es angewendet habe, http://codepen.io/nunoooo/pen/xOzwab –

+1

@Nunocruz Kein Problem, glücklich zu helfen :) – DBS

+0

Ich würde vorschlagen, mit 'parent()' anstelle von 'engsten() 'da Sie bereits wissen, dass es das Elternelement ist und auch' children() 'anstelle von' find() 'verwendet, da Sie bereits wissen, dass das Element, nach dem Sie suchen, ein direkter Nachkomme ist. –