2009-06-20 18 views
5

Quando un utente fa clic sul IMG al termine della seguente "li", voglio ottenere il valore dell'ingresso nascosto due elementi precedente.Come selezionare il valore dell'ingresso nascosto adiacente con Jquery?

<ul id="theLists"> 
    <li> 
    <input class="checkbox" type="checkbox" name="row"/> 
    <input class="contentId" type="hidden" value="64" name="id"/> 
    <div id="64" class="editable">Peanuts for me</div> 
    <img src="/img/delete.gif" alt="delete"/> 
    </li> 
</ul> 

ho provato questo:

$(document).ready(function(){ 
    $("#theLists img").click(function(){ 
     var contentId = $(this).closest("input[name='id']").val();   
    }); 

inutilmente. Qualche idea? Devo impostare una var con l'id della riga, che in questo caso è "64".

risposta

10

più vicino (...) ottiene il nodo principale più vicina, non il fratello più vicino.

Non ci sono, infatti, molteplici modi per fare ciò che si vuole.

Prova questi:

var contentId = $(this).siblings("input[name='id']").val(); 

var contentId = $(this).parent().children("input[name='id']").val(); 

var contentId = $(this).prev().prev().val(); 
+0

Grazie, con il metodo di pari livello. Inoltre, è utile sapere che è possibile utilizzare il composto prev() s. – kevtrout

+0

Senza offesa per Jeff, ma mentre questo risponde alla tua domanda diretta non ti copre se hai mai bisogno di spostare il tag IMG, ad esempio all'interno di uno span o div per modellarlo. – tags2k

+0

Ovviamente risponde solo alla domanda diretta. Se ci fosse menzione di un generale "come impostare questo input" o qualcosa di simile, la mia risposta sarebbe stata diversa. Tuttavia, se la domanda specifica una metodologia, devo presumere che è ciò che è necessario, rispetto a qualsiasi consiglio su come gestire what-if. Spero di non sembrare offensivo, voglio solo chiarire tutto. –

0

Nizza ed economico:

var contentId = $(this).parents('li:first').find('.contentId').val(); 
2

See complete solution here.

È possibile spostare l'attributo id alla contenente <li>, rimuovere il campo nascosto e basta usare:

var contentId = $(this).parent().get(0).id; 

Il vantaggio è che in futuro è possibile aggiungere altre azioni, come "modifica", ecc senza bisogno di preoccuparsi di posizione di un fratello.

Problemi correlati