2016-12-10 3 views
1

Plus tôt dans la journée, je suis resté coincé avec jquery'sfind méthode de travail. Et maintenant, je ne suis pas capable d'aller chercher des éléments imbriqués de ma table html ci-dessous:comment récupérer des éléments imbriqués dans jquery

enter image description here

ce que je suis en train de le faire: sur chaque case à cocher colonnes sélectionnées est select, je veux imprimer les valeurs des frères et sœurs à savoir name et address mais je suis incapable de le faire. Ci-dessous mon code:

$("#but").click(function(){ 
     $(".tabclass tr td input[type='checkbox']:checked").each(function(){ 
      var sibs=$(this).siblings("td"); 
      var v1=$(sibs[0]).text(); 
      var v2=$(sibs[1]).children[0].val(); 
      alert(v1+" & "+v2); 
     }); 
}); 

Code HTML:

<body> 
    <table border="1" class="tabclass"> 
    <th>select</th> 
    <th>Name</th> 
    <th>Address</th> 
    <tr> 
     <td> 
     <input type="checkbox" name="selectCheck" class="select" id="ch1" value="1" /> </td> 
     <td><span class="name">Nitin</span></td> 
     <td> 
     <select name="address"> 
      <option>Gurgaon</option> 
      <option>Noida</option> 
      <option>Rohini</option> 
     </select> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     <input type="checkbox" name="selectCheck" class="select" id="ch2" value="2" /> </td> 
     <td><span class="name">Abc</span></td> 
     <td> 
     <select name="address"> 
      <option>Gurgaon</option> 
      <option>Noida</option> 
      <option>Rohini</option> 
     </select> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     <input type="checkbox" name="selectCheck" class="select" id="ch3" value="3" /> </td> 
     <td><span class="name">Xyz</span></td> 
     <td> 
     <select name="address"> 
      <option>Gurgaon</option> 
      <option>Noida</option> 
      <option>Rohini</option> 
     </select> 
     </td> 
    </tr> 
    </table> 
    <br> 
    <br> 
    <button id="but">Test</button> 
</body> 

Répondre

2

Vous avez 2 numéros avec le code

  • Vous avez besoin du parent de l'entrée vérifiée avant d'obtenir leurs frères et sœurs.

changement

var sibs=$(this).siblings("td"); 

à

var sibs=$(this).parent().siblings("td"); 
  • .children[0] vous donne un objet DOM, qui n'a pas la méthode val().

Remplacer

var v2=$(sibs[1]).children[0].val(); 

avec

var v2 = $('select', sibs[1]).val(); OR var v2=$(sibs[1]).children()[0].value; 

utiliser également console.log au lieu de alert que celui-ci arrête le fil sur lequel l'interface utilisateur exécute.

JS

$("#but").click(function() { 
    $(".tabclass tr td input[type='checkbox']:checked").each(function() { 
    var sibs = $(this).parent().siblings("td"); 
    var v1 = $(sibs[0]).text(); 
    var v2 = $('select', sibs[1]).val(); 
    alert(v1 + " & " + v2); 
    }); 
}); 

Check Fiddle

+0

vous l'avez expliqué dans une grande manière, merci beaucoup. – JPG

+0

@JSK Heureux d'avoir aidé :) –

1

Problème: Est-ce que la case à cocher est enfant de td et il n'a pas ses frères et soeurs. Selon votre code var sibs=$(this).siblings("td"); il ne récupère rien.

Solution: est d'aller d'un niveau à sa mère-à-dire: td et maintenant ce td a des frères.Il faut donc utiliser ce code

var sibs=$(this).parent().siblings("td");

changer aussi $(sibs[1]).children[0].val();

Pour

$(sibs[1]).children('select').val();