2012-08-08 13 views
7

Vorrei selezionare un gruppo specifico di pulsanti che esistono all'interno di un DIV e assegnare il loro ID a un campo nascosto nella pagina, ma non posso per la vita di me selezionare i pulsanti all'interno del div .. Esempio fallisce sottoJquery Seleziona i pulsanti all'interno di div

sorgente HTML

<div id = test> 
    <div class="ButtonGroupWrapper">      
        <img src="test.jpg" width="100" height="100" alt="thumbnail" /> 
       <input id="buttonID5" type="submit" value="Link" class="button" /> 
    </div> 
    <div class="ButtonGroupWrapper">      
        <img src="test.jpg" width="100" height="100" alt="thumbnail" /> 
       <input id="buttonID6" type="submit" value="Link" class="button" /> 
    </div> 
    </div> 

selettore Jquery fallisce

$(".ButtonGroupWrapper").find(":button").click(function() { 
     alert("hi there"); 
     return false; 
    }); 

    $("#ButtonGroupWrapper input[type=button]").click(function() { 
     alert("hi there"); 
     return false; 
    }); 

    $("#ButtonGroupWrapper :button").click(function() { 
     alert("hi there"); 
     return false; 
    }); 

risposta

10

Prova:

$(".ButtonGroupWrapper").find(".button").click(function() { 
     alert("hi there"); 
     return false; 
}); 

Il tuo primo esempio non riesce perché si sta cercando di indirizzare una classe che è preceduto da . non :. Potresti anche provare a scegliere come target un elemento del pulsante di tipo, ma l'elemento in questione è di tipo submit.

Il secondo esempio non riesce perché si sta tentando di selezionare un input del pulsante di tipo quando non ne esiste nessuno (il proprio obiettivo è di tipo submit). Un'alternativa sarebbe input[type=submit].

Il terzo esempio non riesce per un motivo simile al primo errore in quanto sta cercando un elemento del pulsante di tipo.

Vedi anche http://api.jquery.com/button-selector/

+1

Grazie mille. Sono andato con il primo modificando il pulsante: per: submit $ (". ButtonGroupWrapper"). Find (": submit"). Click (function() { alert ("hi there"); return false; }); – RenRock

0

Ciò funzionerà:

$(".ButtonGroupWrapper").find(".button").click(function() { 
    alert("hi there"); 
    return false; 
}); 
7

Mettere uno spazio sembra per qualsiasi classe all'interno apri un la classe .ButtonGroupWrapper. (NOTA: non alcun 'pulsante', ma qualsiasi cosa con il class = "button" codice aggiunto ad essa)

$(".ButtonGroupWrapper .button").click(function() { 
    alert("hello"); 
    return false; 
}); 

Nel codice HTML della inviare ingresso ha una 'classe' di 'pulsante'. Potrebbe effettivamente essere qualcosa come .strawberry o .mybutton o qualsiasi cosa tu voglia.

Alternativa:

Come si dispone di un id avvolgendo l'intero lotto si potrebbe anche pulsante entro l'ID di destinazione:

<div id ="test"> 
    <div>      
    <img src="test.jpg" width="100" height="100" alt="thumbnail" /> 
    <input type="submit" value="Link" class="button" /> 
    </div> 
    <div>      
    <img src="test.jpg" width="100" height="100" alt="thumbnail" /> 
    <div class="button" />Just text</div> 
    </div> 
</div> 

E poi il tuo javascript potrebbe essere:

$("#test .button").click(function() { 
    alert("button class clicked"); 
    return false; 
}); 

Ricorda che devi eseguire questa operazione dopo che il DOM è stato caricato, quindi è consigliabile scriverlo alla fine della pagina o avvolgere i t nella tua funzione onready preferita.

+1

Mentre è bello si sta contribuendo al sito, si prega di notare la ** data ** e ** lo stato ** della domanda originale. La domanda è stata pubblicata ** 1 anno fa ** e l'autore ha già accettato una risposta molto buona e completa (notare il segno di spunta verde accanto alla risposta di j08691). In genere, a meno che non ci siano risposte (o solo risposte molto scarse e incomplete), è necessario evitare di rispondere a domande più vecchie di qualche mese. Lo stesso vale per rispondere a domande che hanno già una risposta accettata.* accettato * significa che l'OP ha effettivamente risposto alla sua domanda. – Daniel

+0

OK grazie per avermelo detto. –

+0

@Daniel, in realtà, penso che Digital abbia aggiunto alcune informazioni molto utili non presenti nella risposta accettata. Io, per esempio, sono felice che la nuova risposta sia stata pubblicata! – JoshP

Problemi correlati