2009-06-20 5 views
5

Wenn ein Benutzer auf den IMG am Ende des folgenden "li" klickt, möchte ich den Wert der ausgeblendeten Eingabe zwei Elemente vorher erhalten.Wie wird der Wert der benachbarten versteckten Eingabe mit Jquery ausgewählt?

<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> 

Ich versuchte dies:

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

ohne Erfolg. Irgendwelche Ideen? Ich muss eine Var mit der Zeilen-ID setzen, die in diesem Fall "64" ist.

Antwort

10

am nächsten (...) erhält den nächsten Elternknoten, nicht den nächsten Geschwister.

Es gibt tatsächlich mehrere Möglichkeiten zu tun, was Sie wollen.

Versuchen Sie diese:

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

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

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

Danke, mit Geschwister-Methode. Gut zu wissen, dass compound prev() s verwendet werden kann. – kevtrout

+0

Nichts für ungut, aber während dies deine direkte Frage beantwortet, deckt es dich nicht ab, wenn du das IMG-Tag zum Beispiel innerhalb eines Spans oder Div verschieben musst, um es zu stylen. – tags2k

+0

Natürlich beantwortet es nur die direkte Frage. Wenn ein allgemeines "wie man diese Eingabe setzt" oder ähnliches erwähnt wird, wäre meine Antwort anders gewesen. Wenn die Frage jedoch eine Methodologie spezifiziert, muss ich davon ausgehen, dass sie benötigt wird, im Gegensatz zu einem Rat, wie man mit What-if's umgeht. Hoffe, ich höre mich nicht beleidigend an, will nur klären. –

0

Nizza und billig:

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

See complete solution here.

Sie können die id Attribut auf den enthaltenden <li> bewegen, entfernen Sie das versteckte Feld und benutzen Sie einfach:

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

Der Vorteil hier ist, dass Sie in Zukunft weitere Aktionen wie "Bearbeiten" usw. hinzufügen können, ohne sich um die Position eines Geschwisters kümmern zu müssen.

Verwandte Themen