2010-09-27 4 views
1

je divs dynamique sous forme de lignes:Comment appeler la souris sur la fonction sur divs dyanamic

<table border=1><tr><td> 
<div id='div1'>fgg</div> 
<div id='div2'>dfgdfg</div> 
<div id='div3'>vcbcvb</div> 
<div id='div4'>sdfsdf</div> 
</td></tr></table> 

Comment puis-je appeler la fonction jQuery sur chaque div MouseOver? Ces divs sont dynamiques, peuvent varier le nombre.

Répondre

3
$("td div").live("mouseover", function() { 
//mouseover code here 
}); 

Je suggère d'utiliser une classe pour vos divs, et à l'aide d'un sélecteur: $(".rows") ou similaire. Cependant, ce qui précède fonctionnera pour le balisage que vous avez donné.

Si vous devez utiliser l'ID, cela vous permettra de l'ajouter par ID. Gardez à l'esprit que lorsque vous ajoutez de nouveaux éléments, vous devez exécuter ce code pour l'identifiant (en supprimant la partie dynamique de votre question d'origine).

$("#mydivid").mouseover(function() { 
    //mouseover code here 
}); 

que vous pourriez utiliser dans une liste comme ceci:

var divs = ["mydiv1", "mydiv2", "mydiv3"]; 
$(divs).each(function() { 
    $("#" + this).mouseover(function() { 
    //mouseover code here 
    }); 
}); 

Ceci est vraiment une mauvaise approche, je fortement suggère d'utiliser à la place une classe.

+0

cela fonctionne très bien, mais cela affectera les divs entiers dans le tds. Puis-je avoir 5 divs avec id mydiv andi veulent appeler seulement ces divs, est-ce possible. J'essaie de ne pas travailler. $ ("td div mydiv"). live. toute solution – zod

+0

$ ("# mydiv"). mouseover ( – zod

+0

Je suggère d'utiliser une classe pour les divs auxquels vous voulez l'appliquer, puis d'utiliser un sélecteur $ (". rows") ou similaire. faites-le par identifiant, et non par classe, vous voudrez utiliser le formulaire que j'ajoute à ma réponse. – sworoc

2

Utilisez la délégation d'événements, .live() ou .delegate() pour lier des événements à des éléments créés dynamiquement.

0

un autre moyen facile est de donner le même nom de classe à tous les divs. vous pouvez accrocher l'événement click par nom de classe au lieu de id. Dans le code, vous pouvez également référencer le bloc div actuel en utilisant le mot-clé "this"

0

Sauf s'il y a une raison pour laquelle vous ne pouvez pas utiliser un nom de classe répétitif pour chaque div, la méthode live() est la voie à suivre. Utiliser une classe serait beaucoup plus efficace, cependant.

Questions connexes