2010-05-20 6 views
4

Salut J'ai besoin d'aide avec un peu de jquery, je suis renommer les listes déroulantes quand une case à cocher à côté d'eux est cliquée. Je veux obtenir la valeur d'option sélectionnée de la liste déroulante appelée «Prev» dans le code ci-dessous et assigner à la case à cocher qui est cliquée. J'espère que ça a du sens. Mercijquery petit problème J'ai besoin d'aide avec

$('.mutuallyexclusive').live("click", function() { 


      checkedState = $(this).attr('checked'); 
      $('.mutuallyexclusive:checked').each(function() { 
       $(this).attr('checked', false); 
       $(this).attr('name', 'chk'); 
      }); 
      $(this).attr('checked', checkedState); 

      if (checkedState) { 
       jQuery('#myForm select[name=cat.parent_id]').attr('name', 'bar') 

       // here is the bit i need help with 
       // get the selected option of the dropdown prev and set it to $(this).val.. something along those lines 
       var prev = $(this).prev('select').attr("name", 'cat.parent_id'); 

      } 
      else { 
       var prev = $(this).prev('select').attr("name", 'dd'); 
      } 

     }); 
    }); 
+1

Avez-vous le balisage HTML des éléments de formulaire avec lesquels vous travaillez? – EvilChookie

+0

J'ai de la difficulté à comprendre ce que vous voulez faire. Pour obtenir la valeur d'une option sélectionnée $ ("select option: selected"). Val(); –

+0

oui, dans la liste de sélection 'var Prev' et mettez la valeur à la case cochée – Martin

Répondre

1

La structure HTML aiderait une tonne, mais la première optimisation est de mettre en cache votre case à cocher initiale. Ensuite, profitez de l'itération implicite dans jQuery. Si je comprends ce que vous essayez de le faire, je finis avec ceci:

$('.mutuallyexclusive').live("click", function() { 

    var $check = $(this); 

    var checkedState = $check.attr('checked'); 

    $('.mutuallyexclusive:checked') 
     .attr('checked', '') 
     .attr('name', 'chk'); 

    $check.attr('checked', checkedState); 

    if (checkedState) { 
     $check.attr('name', $check.prev('select').val()); 
    } else { 
     $check.attr('name', 'dd'); 
    } 

}); 

Je ne pouvais pas dire à coup sûr de votre question de savoir si vous vouliez affecter la valeur de la case à la liste de sélection, ou vice versa. Je suis allé avec "mettre le nom de la case à cocher à la valeur de la liste de sélection". J'espère que c'est ce que vous recherchiez.