2013-02-12 6 views
0

Je vais essayer d'expliquer autant que possible, je veux juste changer le src de la balise img lorsque la souris est dessus (sur Hover); le html estJQuery hover ne fonctionne pas

<ul id="nav-tabs" data-tabs="tabs"> 
    <li id="test" style="list-style: none;" class="active"> 
    <a href="#home" data-toggle="tabs" ><img src="assets/img/button_home_selected3.png" id="test2" width="83"/><span s>Home</span></a> 
    </li> 
</ul> 

les balises li sont ajoutées dynamiquement il script en utilisant

$('.plus').click(function(e) { 
e.preventDefault(); 
var li_count = $('#nav-tabs').length; 
if (li_count <= 3){ 
    if(counter <= 3){ 
    $('#nav-tabs').append('<li id="test" ><a href="#tab' + counter + '" data-toggle="tabs" ><img src="assets/img/button_home_plain1.png" width="83" id="test2">Tab' + counter + '</span><button type="button" class="close">&times;</button></a></li>'); 
} else { alert("Only 3 Tabs Allowed!")}; 
} 

aussi est une balise active qui permet de basculer entre les onglets, ce qui est fait script à l'aide

$('li#test').each(function() { 
if($(this).hasClass('active')) 
{//Active class is applied 
    $(this).children().children().attr("src", "assets/img/button_home_selected3.png"); 
} 
else 
{ 
    $(this).children().children().attr("src", "assets/img/button_home_plain.png"); 
} 

})

J'ai essayé quelque chose, mais il ne fonctionne pas, peut-être je suis mal placer quelque part, À seulement ne connaissez pas

$('#test2').hover(function(e) { 
    e.preventDefault(); 
    if ($(this).attr('src') == 'assets/img/button_home_plain1.png') 
    { 
    $(this).attr('src','assets/img/button_home_mouseOver1.png'); 
    } 
}); 
+0

vous avez probablement passé l'âge de faire cela, mais il est plus facile à faire ce genre de chose avec CSS comme c'est plus ou moins ce que CSS fait. eghttp: //www.onextrapixel.com/2009/05/12/how-to-create-pure-css-rollover-to-display-single-or-multiple-elements-at-remote-area/ Vous pouvez définir les classes en javascript mais font tout l'échange d'image en CSS. – matpol

+0

Vous ajoutez plusieurs éléments Li avec le même ID et les mêmes images. vous pourriez vouloir utiliser des classes à la place. – ryadavilli

+0

avez-vous tout mis dans $ (document) .ready (function() {})? et aussi ne pas essayer d'ajouter jquery.min script – Neel

Répondre

0

Vous pouvez essayer d'utiliser .data() de garder une trace des URL d'origine et .on() (jQuery> = 1.7) pour vous inscrire callbacks pour les événements:

$("#nav-tabs").on("mouseover", "#test2", function(){ 
    $(this).data("originalSrc", $(this).attr("src")); 
    $(this).attr("src", "assets/img/button_home_mouseOver1.png"); 
}); 

$("#nav-tabs").on("mouseout", "#test2", function(){ 
    $(this).attr("src", $(this).data("originalSrc")); 
}); 

http://api.jquery.com/on/

+0

merci beaucoup, je me suis fait travailler sur mouseOver, mais si vous lisez mon code ci-dessus, vous pouvez voir qu'il ya une classe active qui bascule entre les balises li, maintenant je veux juste le src original sur le mouseout car il aura soit l'image sélectionnée ou l'image simple, donc il y a un total de 3 images. savez-vous un moyen de trouver le src original de tag img afin que je puisse le mettre à l'intérieur du mouseover – Hunain

+0

Edited ma réponse pour garder une trace de l'URL. Cet exemple échouerait si, pour une raison quelconque, l'événement 'mouseout' serait appelé avant le passage de la souris, mais il est assez facile de corriger cela aussi, si c'est un problème dans votre cas. – pckill