2011-07-17 6 views
0

Objectif:
Récupérer les données "aaa" du premier "td" dans "tr" en appuyant sur le lien "info". Par exemple, si vous appuyez sur le lien "info" du premier "tr" je devrais récupérer les données "aaa" du premier "tr".récupérer des données spécifiques de la table

Problème:

problème d'avoir à trouver une solution pour récupérer des données "aaa" en appuyant sur le lien "info" en utilisant JavaScript et JQuery. En d'autres termes, comment Récupérer des données et jquery javascript

S'il vous plaît que je dois rememeber aussi transer la valeur aaa pour une autre méthode par rapport à la logique métier.

Autre chose, La quantité de lignes dans la liste peut être changée tous les jours.


<table border="1" SUMMARY="aaa" id="tblProjekt"> 
    <thead> 
     <tr> 
      <th>Projekt name</th> 
      <th>Total time</th> 
      <th>Task</th> 
      <th>comments</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>aaa</td> 
      <td>aaa</td> 
      <td>aaa</td> 
      <td><a href='#' onclick='startPoint(); return false;'>info</a></td> 
     </tr> 
     <tr> 
      <td>bbb</td> 
      <td>bbb</td> 
      <td>bbb</td> 
      <td><a href='#' onclick='startPoint(); return false;'>info</a></td> 
     </tr> 
     <tr> 
      <td>bbb</td> 
      <td>bbb</td> 
      <td>bbb</td> 
      <td><a href='#' onclick='startPoint(); return false;'>info</a></td> 
     </tr>  
    </tbody> 

</table> 
+0

Vous souhaitez récupérer la valeur de la première cellule de la même ligne sur laquelle le lien est cliqué? Ai-je raison? Si oui, savez-vous que vous avez seulement une ligne avec des liens, et il n'y a que des liens, pas d'autres données? – Tadeck

+0

"Vous voulez récupérer la valeur de la première cellule de la même ligne sur laquelle le lien est cliqué? Suis-je correct?" J'ai maintenant fourni le bon code source. –

+0

Pourquoi les gens insistent-ils pour utiliser un élément A quand ils ne veulent vraiment pas d'élément A? Utilisez simplement un span style ou un élément de bouton. – RobG

Répondre

0

J'accepte de 3nigma que la question n'est pas claire. Si vous voulez voir apparaître le lien dans chaque ligne et afficher d'abord le contenu de la cellule après avoir cliqué sur, est la solution ici (see jsfiddle):

jQuery('#tblProjekt').delegate('a.startPoint', 'click', function(event){ 
    event.preventDefault(); 
    var info = jQuery(this).parents('tr').find('td:first-child').html(); 
    alert(info); 
}); 

Ceci affichera la fenêtre d'alerte avec ce que je viens de décrire. Cela suppose que votre HTML devrait ressembler à ceci:

<table border="1" SUMMARY="aaa" id="tblProjekt"> 
    <thead> 
     <tr> 
      <th>Projekt name</th> 
      <th>Total time</th> 
      <th>Task</th> 
      <th>comments</th> 
      <th>(link for more info)</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>aaa1</td> 
      <td>aaa2</td> 
      <td>aaa3</td> 
      <td>aaa4</td> 
      <td><a href="#" class="startPoint">info</a></td> 
     </tr> 
     <tr> 
      <td>bbb1</td> 
      <td>bbb2</td> 
      <td>bbb3</td> 
      <td>bbb4</td> 
      <td><a href="#" class="startPoint">info</a></td> 
     </tr> 
    </tbody> 
</table> 

at-il aidé? Est-ce ce dont vous aviez besoin?

Ps. J'ai supprimé JavaScript en ligne de votre code. Essayez d'éviter cela si possible.

+0

Je suis confus: il devrait essayer d'éviter * quoi *, «si possible»? –

+0

@David Thomas: Désolé d'être pas assez clair. Il devrait éviter JavaScript en ligne, il est plus difficile à maintenir. A l'origine, il assignait des événements 'onclick' dans la balise d'ancrage en utilisant" _Intrinsic events_ "(pour plus d'informations, voir [document W3C] (http://www.w3.org/TR/html4/interact/scripts.html)). – Tadeck

+0

En relisant, c'est logique. Je ... ne sais pas comment, ou pourquoi, j'ai réussi à rater l'explication. Mes excuses pour être, apparemment, cliniquement aveugle ... = / –

0

votre question n'a pas été clair pour moi, mais le violon suivant atteint l'objectif indiqué dans la question à savoir pour récupérer aaa

$("a:contains('info')").click(function(){ 

var v = $("#tblProjekt >tbody> tr:first>td").html(); 
alert(v); 
}); 

http://jsfiddle.net/JKByC/1/

EDIT

pour la mise à jour html

$("a").click(function(){ 

    var v = $(this).closest("tr").children(':first-child').text(); 
    alert(v); 

}); 

est ici le violon http://jsfiddle.net/sDZ7q/

0

Oui, je ne suis pas clair sur la demande. Mais je pense que vous voudrez peut-être quelque chose comme ça (pour vous lancer sur votre chemin ..)

$('#oneColumnInfo').click(function(){ 
    var oneColumnText = $('tbody tr td:first').text(); 
    alert(oneColumnText); 
    return false; 
}); 

$('#twoColumnInfo').click(function(){ 
    var twoColumnText = $('tbody tr td:first').next().text(); 
    alert(twoColumnText); 
    return false; 
}); 

http://jsfiddle.net/jasongennaro/eaSMS/

BTW, j'ai enlevé la ligne click events.

<table border="1" SUMMARY="aaa" id="tblProjekt"> 
    <thead> 
     <tr> 
      <th>Projekt name</th> 
      <th>Total time</th> 
      <th>Task</th> 
      <th>comments</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>aaa</td> 
      <td>abc</td> 
      <td>aaa</td> 
      <td>aaa</td> 
     </tr> 
     <tr> 
      <td>bbb</td> 
      <td>bbb</td> 
      <td>bbb</td> 
      <td>bbb</td> 
     </tr>  
     <tr> 
      <td><a href='#' id="oneColumnInfo">info</a></td> 
      <td><a href='#' id="twoColumnInfo">info</a></td> 
      <td><a href='#'>info</a></td> 
      <td><a href='#'>info</a></td> 
     </tr>  
    </tbody> 

</table> 
0

Compte tenu du html modifié dans la question, je suggère d'utiliser:

$('td a').click(
    function(){ 
     var projektName = $(this).closest('tr').find('td:first').text(); 
     alert(projektName); 
     return false; 
    }); 

JS Fiddle demo.


Références:

Questions connexes