2011-10-09 10 views
1

J'ai vérifié certaines des questions similaires qui ont été posées.Comment obtenir l'identifiant d'un bouton lorsque vous cliquez sur jQuery?

Je souhaite ajouter/supprimer des boutons lorsque les utilisateurs cliquent dynamiquement sur les boutons Ajouter/Supprimer. Par conséquent, chaque bouton doit avoir un identifiant unique pour s'identifier.

Voici une partie du code html:

<p id="q1">Question: 1<input type="text" class="ttt"/> 
<button class="buttonPlus" type="button"></button> 
<button class="buttonMinus" type="button" id="1"></button></p> 

Voici une partie du code jQuery:

var questionCount = 1; 
$("#q1").append("<p id='p2'>Question: " + ++questionCount + "<input type='text'>\ 
<button type='button' class='buttonPlus'></button>\ 
<button type='button' class='buttonMinus' id=questionCount></button></p>"); 
//Re-binding 
var newBtnPlus = $("#q1").find('.buttonPlus:last'); 
var newBtnMinus = $("#q1").find('.buttonMinus:last'); 
newBtnPlus.click(function(){ 
    btnPlsClickEvent(newBtnPlus); 
}); 
newBtnMinus.click(function() { 
    btnMnsClickEvent(newBtnMinus); 
}); 



function btnMnsClickEvent(btn) { 
var idNum = $(this).attr("id"); 
alert(idNum);} 

Outre la méthode ci-dessus, je l'ai essayé: alter (this.id) ; alter (btn.id); .etc.

Je ne sais pas pourquoi je ne peux pas obtenir l'identifiant dynamiquement assigné aux boutons moins, je ne peux pas non plus obtenir le code statiquement assigné par le code html.

J'ai été bloqué par cette question pendant des heures. Pourriez-vous m'aider?

Merci, Ashley

+0

Je suppose que vous liez l'événement moins/plus à plusieurs éléments, donc la raison de se séparer pour séparer "btnMnsClickEven" fu nctions? –

+0

Que comptez-vous être renvoyé? Quelques notes: il est illégal d'utiliser un identifiant qui commence par un nombre. En outre, l'identifiant que vous définissez lorsque vous créez des éléments via javascript est des guillemets manquants. – kroehre

Répondre

3

Il suffit de passer une référence au bouton quand vous allez appeler la fonction générique:

newBtnMinus.click(function() { 
    btnMnsClickEvent(this); // use "this" instead of your selector object 
}); 

function btnMnsClickEvent(btn) { 
    var idNum = btn.id; // now reference the button you pass 
    alert(idNum); 
} 
+0

+1 pour vous aider à atteindre cette marque 20k;) – AlienWebguy

+0

@AlienWebguy: lol, merci. Bien que la réputation soit juste le bonus supplémentaire pour aider. ;-) –

+0

Je ne suis pas d'accord - la rep débloque des privilèges qui nous permettent de mieux contribuer. À 20k vous êtes un utilisateur de confiance, mon ami :) http://stackoverflow.com/privileges/trusted-user – AlienWebguy

1

Pas besoin d'utiliser $(this).attr('id') lorsque vous pouvez simplement utiliser this.id

$('button').click(function(){ 
    alert(this.id); 
}); 
Questions connexes