2009-06-20 11 views
1

J'ai une fonction qui permet aux utilisateurs de modifier une ligne dans un tableau en ouvrant les données dans un modal. En ce moment, toute la rangée tirera le modal. Ce que je veux, c'est isoler le dernier td qui contient un lien qui déclenche une fonction qui prépare les données pour le traitement.jquery tablerow cliquez sur la fonction

Qu'est-ce qui se passe est que lorsque ce dernier td est cliqué le modal s'ouvre ET la fonction prête se déclenche. J'essaye d'arrêter le modal de l'ouverture. J'ai également une ligne de survol de la souris sur chaque ligne de la table.

Voilà comment j'associe les lignes de la table avec la fonction modale:

$("#table").find("tr").click(function(e) { 

//code to open model 
} 

Voici comment je tire la fonction prêt:

$("#table tr td:last-child a").click(function(e) { 
//code to open model 
} 

Répondre

1

je crois que vous devez appeler e.stopPropogation() pour empêcher l'événement de propogating:

$("#table tr td:last-child a").click(function(e) { 
    //code to open model 
    e.stopPropagation(); 
    return false; 
} 

Explication:

événements se propagent de l'élément le plus "spécifique" à leurs parents . Ceci est appelé bouillonnement, et dans ce cas, votre deuxième modal est déclenché parce que l'événement click est en train de bouillir de l'élément A à l'élément TR. Je crois que tous les événements se propagent et bouillonnent. Return false annule simplement l'action par défaut de l'élément A, qui est de suivre le lien ... il n'arrête pas l'objet événement. Il s'agit d'un good explanation de l'ensemble.

+0

Pour les événements onClick, cela n'est pas nécessaire. Essayez-le. – molf

+0

J'ai essayé toutes les réponses ... celle-ci fonctionne. Ce que je ne comprends pas c'est pourquoi cela fonctionne avec ou sans le retour faux ... Merci, Wali – wali

+0

@Wali, S'il vous plaît voir mon message, j'ai ajouté une explication. –

1

ajouter simplement "return false;":

$("#table tr td:last-child a").click(function(e) { 
    // whatever should happen when clicking the anchor 
    return false; 
} 

Cela empêche la propagation de l'événement dans le voisinagedix .

0

pourquoi, au lieu de trouver le lien dans la dernière cellule d'une ligne dans la table juste attribuer un identifiant ou une classe à votre lien

comme ...

, puis ajoutez l'affichage: propriété de bloc du fait qui css l'ancre pour remplir toute la région, il est contenu.

alors simplement

$('.anchorclass').click(function(){ 

// faire quelque chose ici

});

Questions connexes