2012-04-11 3 views
5

Besoin d'un peu d'aide avec mon jquery icisélecteurs Jquery

Je veux tout mon bouton avec un nom commençant par « my- » et finissant par « -appuyer » d'avoir un événement « clic ».

<input type="button" id="my-button-x-press" name="my-button-x-name-press" /> 

Les boutons dynamiquement ajoutés à DOM doivent avoir le même événement.

Répondre

10

http://api.jquery.com/category/selectors/

$('input[type=button][name^=my-][name$=-press]').click(function() { 
    // code 
}) 

Pour attribuer l'événement à des éléments dynamiquement, utilisez onhttp://api.jquery.com/on/ et alimenter votre sélecteur comme deuxième argument correctement événement delegate.

$('#container').on('click', 'input[type=button][name^=my-][name$=-press]', function() { 
    // code 
}) 

En supposant que vous envelopper vos entrées sur #container, sinon remplacer #container avec body, mais il est toujours préférable de choisir l'ancêtre le plus proche de la selector

0

leur donner toute une classe et faire:

$('.classname').click(function(){etc.}); 
0

vous pouvez le faire comme ça

$('#my-'+dunamic_change_here+'-press').click(function(){ 
    // your code 
}); 
0

Du haut de ma tête:

$('input[name^="my-"]input[name$="-press"]').click(function(){ 
    //Stuff to happen. 
}); 

Si elles sont ajoutées dynamiquement à le dom:

$('input[name^="my-"]input[name$="-press"]').on('click', function(){ 
    //Stuff to happen. 
}); 

M Atpols réponse est probablement le moyen le plus simple de le faire réellement.

+0

Si les entrées sont insérées dynamiquement, alors 'on()' devrait être lié à un élément ancêtre, pas à l'élément qui est inséré dynamiquement. –