2010-08-01 3 views
0

Je ne peux pas empêcher la chose stupide de tirer un événement au survol des enfants de l'article. Je veux seulement que l'événement se déclenche via l'élément div.item, pas le div.itemChild. Cela me rend fou s'il vous plaît aider.arrêter jquery en direct de accrocher tous les enfants

event.stopPropigation ne fonctionne pas. ni if(!$(event.source).is('itemChild')), pour une raison quelconque is() renvoie toujours faux.

HTML

<div id="items"> 
    <div class="item"> 
     <div class="itemChild"> 
     </div> 
     <div class="itemChild"> 
     </div> 
    </div> 
</div> 

JS

//on hover event for each post 
$('div.item', '#items').live('mouseover mouseout', function(event){ 
    if (event.type == 'mouseover'){ 
     //fire mouseover handler 
    } 
    else{ 
     //fire mouseout handler 
    } 
}); 

Y at-il un moyen d'arrêter en direct de tirer en vol stationnaire les enfants de div.item?

D'ailleurs les enfants de div.item le couvrent complètement.

Fondamentalement, je veux que cela agisse comme .hover() mais se lient aux choses chargées via ajax.

+1

'arrêt jquery en direct de tous les accrochage children.' - Cela ressemble une question de services de protection de l'enfance. –

+0

hahaha, oui sans blague. –

Répondre

2

Ce n'est pas obligatoire pour les enfants. Ça bouillonne jusqu'au parent.

En outre, votre syntaxe n'est pas correcte. Ceci:..

$("div.item", "div.items")... 

est dire « me trouver tous les divs avec élément de classe qui sont des descendants de divs avec la classe d'articles Mais vous n'avez pas ces divs (avec des objets de classe) Vous avez un div avec un ID de articles

Combinant tout cela essayer.

$("#items div").live("mouseover mouseout", function(event) { 
    if ($(event.source).hasClass("itemChild")) { 
    return false; 
    } else if (event.type == "mouseover") { 
    ... 
    } else { 
    ... 
    } 
}); 

Ou encore:

Fondamentalement, il y a plusieurs façons d'habiller ce chat mais comme je l'ai dit dans la première phrase, vous devez comprendre que les événements éclatent jusqu'à ce que les gestionnaires arrêtent la propagation, soit directement (en appelant event.stopPropagation() ou en retournant false depuis le gestionnaire d'événements, qui est équivalent à event.stopPropagation(); event.preventDefault();).

De plus, si vous faites mouseenter et mouseout vous pourriez tout aussi bien utiliser l'événement hover() qui fait les deux personnes:

$("#items > div.item").live("hover", function(event) { 
    // mouseenter 
}, function(event) { 
    // mouseout 
}); 
+0

Ce n'est pas très utile –

+3

@Robert wow, downvoting personnes essayant de vous aider. façon d'obtenir aucune aide du tout. – cletus

+0

Eh bien, vous n'avez rien eu d'utile dans votre message quand je l'ai voté. Depuis, vous avez ajouté plus et j'ai supprimé le vote négatif. Merci. –

Questions connexes