2009-06-20 13 views
5

Gdy użytkownik kliknie na img na końcu następującego "li", chcę uzyskać wartość ukrytego wejścia dwa elementy poprzednie.Jak wybrać wartość sąsiedniego ukrytego wejścia za pomocą 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> 

Próbowałem to:

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

bezskutecznie. Jakieś pomysły? Muszę ustawić var ​​z identyfikatorem wiersza, który w tym przypadku wynosi "64".

Odpowiedz

10

Najbliższy (...) pobiera najbliższy węzeł nadrzędny, a nie najbliższy rodzeństwo.

Istnieje wiele sposobów robienia tego, co chcesz.

Spróbuj tych:

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

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

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

Dzięki, używając metody rodzeństwa. Dobrze też wiedzieć, że związek prev() s może być użyty. – kevtrout

+0

Bez urazy dla Jeffa, ale podczas gdy odpowiada to na twoje bezpośrednie pytanie, nie obejmuje cię, jeśli będziesz potrzebował przenieść znacznik IMG, na przykład w obrębie span lub div, aby go stylizować. – tags2k

+0

Oczywiście odpowiada tylko na bezpośrednie pytanie. Jeśli wspomniano o ogólnym "jak ustawić to wejście" lub tym podobne, moja odpowiedź byłaby inna. Jeśli jednak pytanie określa metodologię, muszę założyć, że to jest potrzebne, w przeciwieństwie do jakiejkolwiek porady, jak sobie poradzić z tym, co jest. Mam nadzieję, że nie zabrzmi obraźliwie, chcę tylko wyjaśnić wszystko. –

0

ładne i tanie:

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

See complete solution here.

Można przesunąć atrybut id do zawierającym <li>, usunąć pole ukryte i po prostu użyć:

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

Zaletą jest to, że w przyszłości można dodawać inne akcje, takie jak "edycja" itp., Bez konieczności martwienia się o pozycję rodzeństwa.

Powiązane problemy