2010-08-11 9 views
1

J'ai trouvé assez de jQuery pour sélectionner ce morceau dans un énorme document HTML. Je veux sélectionner la valeur du sujet, body, et date_or_offset. (Ce sont name attributs comme indiqué ci-dessous). Comment je vais à ce sujet. En supposant que cette impression est de alert($(this).html()) à l'intérieur d'une fonction de rappel.Aide avec la sélection jQuery

<p><label for="first">Subject</label> <br> 
    <input class="input" name="subject" type="text"> 
</p> 
<p><label for="textarea">Body </label> <br> 
    <textarea class="textarea" name="body" id="textarea" rows="5" cols="30"></textarea> 
</p> 
<p><label for="first">Date <span>(xx/xx/xxxx) or Offset</span></label> <br> 
    <input class="input" name="date_or_offset" id="first" type="text"> 
</p> 

Répondre

3

Vous pouvez l'obtenir via .find() et .val(), comme ceci:

var subject = $(this).find('input[name=subject]').val(); 
var body = $('#textarea').val(); 
var date = $('#first').val(); 

Comme ID sont uniques, le dernier 2 peut être sélectionné via un directement sélecteur #ID, le premier que nous trouvons par name="subject" en utilisant un attribute-equals selector. Si les ID ne sont pas unique (et ils devraient l'être, corrigez si c'est le cas), vous pouvez utiliser un sélecteur [name=xx] pour les autres, utilisez simplement textarea au lieu de input pour l'élément body.

+0

Le 'find' est-il vraiment nécessaire? –

+0

@Gert - Cela dépend qu'il ait un élément, sans plus de contexte que vous ne pouvez pas dire à coup sûr ... mais c'est plus efficace dans tous les cas. Un '$ ('input [nom = sujet]')' est * vraiment * appelant '$ (document) .find ('input [nom = sujet]')' qui recherche tout le document, ceci recherche une portée beaucoup plus étroite, c'est donc un sélecteur beaucoup plus rapide. –

+0

+1 Cela a du sens. Merci Nick. –

3
$("input[name=subject]").val(); 
$("#textarea").val(); 
$("#first").val();