Tengo este código HTML:

<div class="image-widget-data"><span class="file">
    <input type="hidden" value="115" name="field_tablica[und][0][fid]">
    <input type="hidden" value="1" name="field_tablica[und][0][display]">
    <input type="hidden" value="560" name="field_tablica[und][0][width]">
    <input type="hidden" value="560" name="field_tablica[und][0][height]">
    <div class="imageeditor">
        <div class="editors">
            <div data-codename="picmonkey" 
                 title="PicMonkey" 
                 class="imageeditor-widget-item picmonkey imageeditor-processed">
            </div>
        </div>
    </div>
</div>

Al hacer clic en DIV.picmonkey, me gustaría obtener el valor "115" de la entrada denominada field_tablica[und][0][fid] donde 0 puede ser de 0 a 9.

¿Qué selector de jQuery debo usar?

0
Michlis 2 sep. 2014 a las 11:21

3 respuestas

La mejor respuesta

Muy similar a la Respuesta de Poelinca Dorin y el comentario de Arun P Johny: http://jsfiddle.net/zlatin_zlatev/0ubg7m34/

La diferencia es que no confío tanto en la estructura DOM actual; solo necesita tener un div de ajuste con la clase image-widget-data.

No importa si las entradas ocultas están directamente debajo, o en algún otro elemento html dom, p. Ej. formar.

EDITAR: Parece que .closest () tiene un mejor rendimiento que .parentsUntil (), por lo que es mejor ir con él http: //jsperf.com/closest-vs-parentsuntil (Mi respuesta se ha convertido en lo mismo que lo que Arun P Johny sugirió después de reemplazar los padres hasta que estén más cerca)

(function ($) {
$('.picmonkey').on('click', function (e) {
    alert($(this).closest('.image-widget-data').find('input[name$="[fid]"]').val());
});
})(jQuery);
2
Community 23 may. 2017 a las 10:24

Utilice el termina con jQuery selector como en este ejemplo de jsfiddle

$(function() {
    $('.picmonkey').on('click', function (e) {
        alert($(this).closest('.imageeditor').siblings('input[name$="[fid]"]').val());
    });
});
1
Poelinca Dorin 2 sep. 2014 a las 07:36

Tratar

$("[data-codename]").on("click", function() {
    console.log($("[name*=\\[fid\\]]").val())
})

Jsfiddle http://jsfiddle.net/guest271314/aer9bmrn/2/

0
guest271314 2 sep. 2014 a las 07:48