2012-08-08 19 views
7

Me gustaría seleccionar un grupo específico de botones que existen dentro de un DIV y asignar su ID a un campo oculto en la página pero no puedo por mi vida seleccionar los botones dentro del div .. Ejemplo cae por debajo deJquery Seleccionar botón (s) dentro de div

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

selector de jQuery falla

$(".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; 
    }); 

Respuesta

10

Probar:

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

Su primer ejemplo falla porque usted está tratando de apuntar a una clase que es precedido por . no :. También puede estar intentando apuntar a un elemento del botón de tipo, pero el elemento en cuestión es del tipo enviar.

Su segundo ejemplo falla porque está tratando de seleccionar una entrada de tipo botón cuando ninguno existe (su objetivo es enviar tipo). Una alternativa sería input[type=submit].

Su tercer ejemplo falla por una razón similar al primer error de ejemplo en que está buscando un elemento del botón de tipo.

Ver también http://api.jquery.com/button-selector/

+1

Muchas gracias. Fui con el primero cambiando el botón: para enviar $ (". ButtonGroupWrapper"). Find (": submit"). Click (function() { alerta ("hola allí"); return false; }); – RenRock

0

Esto funcionará:

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

Poner un espacio busca cualquier clase .button dentro de su clase .ButtonGroupWrapper. (NOTA: no cualquier 'botón', pero nada con la clase "botón" código = agregado a él)

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

en el código HTML de la presente entrada tiene una 'clase' de 'botón'. En realidad podría ser algo como .strawberry o .mybutton o lo que quieras.

Alternativa:

Como usted tiene un id envolver la totalidad del lote que podría también botón dentro de la ID de destino:

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

Y entonces su javascript podrían ser:

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

Recuerda que necesitas ejecutar esto después de que el DOM se haya cargado, así que lo mejor es escribirlo al final de la página o envolverlo t en su función lista de favoritos.

+1

Si bien es fantástico que contribuyas al sitio, ten en cuenta la ** fecha ** y el ** estado ** de la pregunta original. La pregunta se publicó ** hace 1 año ** y el autor ya ha aceptado una respuesta muy buena y completa (tenga en cuenta la marca verde al lado de la respuesta de j08691). Normalmente, a menos que no haya respuestas (o respuestas muy pobres e incompletas), debe evitar responder preguntas anteriores a unos pocos meses. Lo mismo aplica para responder preguntas que ya tienen una respuesta aceptada.* aceptado * significa que el OP efectivamente ha dicho que su pregunta es respondida. – Daniel

+0

OK gracias por avisarme. –

+0

@Daniel, en realidad, creo que Digital agregó información muy útil que no está presente en la respuesta aceptada. Yo, por mi parte, me alegro de que se haya publicado la nueva respuesta. – JoshP

Cuestiones relacionadas