2011-05-20 5 views
2

Je crée une boîte de dialogue d'auto-suggestion contenant une suggestion, et j'essaie d'ajouter/de supprimer la classe "searchsuggestinnerulhighlight" aux liens individuels. Voici la dynamique de retour taClasse Ajout/Suppression dynamique Jquery

<DIV id="searchsuggestinner"> 
    <UL id=searchsuggestinnerul> 
    <LI> 
    <A href="#" id="1" class = "hoverme" onMouseDown="searchsuggestSubmit('appalachian trail');">appalachian trail</A> 
    </LI> 
    </UL> 
    </DIV> 

Et voici mon jQuery:

$(".hoverme").live("mouseover mouseout", function(event) { 
    if (event.type == "mouseover") { 
     $("#" + mocount).removeClass("searchsuggestinnerulhighlight"); 
     mocount = $(this).attr('id'); 
     $("#" + mocount).addClass("searchsuggestinnerulhighlight"); 
    } else { 
     $("#" + mocount).removeClass("searchsuggestinnerulhighlight"); 
    } 
}); 

Au départ, j'eu Css (« background-color » ... et maintenant je l'ai changé pour ajouter la classe et de supprimer la classe et il ne fonctionne pas Toutes les idées

Répondre

5

changement.?

$("#" + mocount).add("searchsuggestinnerulhighlight"); 

Pour:

$("#" + mocount).addClass("searchsuggestinnerulhighlight"); 
+0

désolé, c'était une faute de frappe de ma part. J'ai changé cela et ça ne marche toujours pas. D'autres suggestions? Je pense que cela a à voir avec comment le retour n'est pas réellement sur la page pour commencer .. – Adam

+0

Je regarderais ce que @lonesomeday a posté, il fait quelques bons points. Le fait que vous utilisiez un entier pour votre identifiant n'est pas kasher, sauf en HTML5, cela pourrait causer des problèmes. – Gabe

+0

okay. Je vous remercie! – Adam

3
mocount = $(this).attr('id'); 
$("#" + mocount) 

C'est sérieusement douteux jQuery! D'abord, vous n'avez pas besoin de attr pour obtenir le id. Vous pouvez l'obtenir avec this.id. C'est loin, beaucoup plus vite. Deuxièmement, vous n'avez pas besoin de id pour obtenir une sélection jQuery contenant l'élément cliqué. Utilisez simplement $(this) à la place. Enfin, comme l'a dit Gabe, utiliser addClass plutôt que add. Donc, dans l'ensemble:

$(this).addClass('searchsuggestinnerulhighlight'); 

Une autre chose, si - en utilisant une valeur d'identification commençant par un nombre n'a pas été autorisé en HTML avant HTML5. Son comportement n'est pas garanti.

+0

ajouter était une faute de frappe, j'avais addClass avant. Pardon. D'autres idées pourquoi cela ne fonctionnerait pas alors? – Adam

+0

@Adam Qu'est-ce qui "ne fonctionne pas"? Avez-vous des erreurs? Avez-vous fait les autres changements que j'ai recommandés? – lonesomeday

+0

La classe n'est pas ajoutée car l'arrière-plan ne l'est pas. J'ai fait le "this.id" changement, puis alerté l'id pour s'assurer que cela fonctionnait mais il a dit "undefined" au lieu de la valeur, et puis quand je l'ai changé en ".attr ('id')" il travaillé. J'ai utilisé $ (this) au lieu de l'id, cependant, et cela fonctionne très bien. Il est globalement toujours pas ajouter la classe si \t voici un lien vers celui-ci: 184.106.227.117/~srchulo/searchsuggest/test.htm – Adam

0

Je mettrais cela dans un commentaire, mais je ne peux pas. Implémentez les changements de lonesomeday, mais quand il utilise $ (this) .id, essayez d'utiliser this.id car 'this' devrait déjà être un objet jquery. (Nous ne voulons pas $ ($ (this)).)