2010-11-19 7 views
0

Je voudrais passer la valeur d'une balise HTML à une boîte d'alerte jQuery, mais je n'ai pas de chance. Je veux fondamentalement passer "1" ou "2" à la boîte d'alerte. Je continue d'être "indéfini" dans la boîte d'alerte.Comment puis-je transmettre la valeur d'une propriété HTML à une fonction jQuery?

<button class="up" value="1"> 
<button class="down" value="2"> 

$(document).ready(function(){ 
    $(".up,.down").click(function(){ 
     alert(this.value); 
    }); 
)}; 

Je fais cela pour une fonction ajax, mais je dois vous assurer que je peux transmettre les valeurs d'abord, de sorte que la zone d'alerte est pour le débogage.

Répondre

1

C'est parce que la valeur d'un bouton est ce qui est entre les <button></button> Tags dans IE7, pour être sûr que vous pouvez vous pouvez utiliser à la place par exemple un attribut data-, comme ceci:

<button class="up" data-value="1">Something</button> 

avec le script correspondant:

$(document).ready(function(){ 
    $(".up,.down").click(function(){ 
     alert($(this).data("value")); 
    }); 
)}; 

You can test it here.

+0

Merci, Nick. Une chose: pourquoi cette alerte "indéfinie?" myData = $ (this) .data ("valeur"); alerte (myData); – Mohamad

+1

@Mel - Si vous n'êtes pas sur jQuery 1.4.3+ utilisez '.attr (" data-value ")' ... sinon '.data (" value ")' le tirera correctement. –

+0

Peu importe ... la variable doit être définie à l'intérieur de la fonction de clic! – Mohamad

4
alert($(this).attr("value")); 
+2

Cela ne devrait pas faire de différence et n'aborde toujours pas le problème IE7 ici. –

2

this.value fonctionne très bien (I tested it dans IE8, FF3 et Chrome). Je ne sais pas comment vous pouvez éventuellement voir "indéfini". Vous avez une erreur de syntaxe dans la fermeture de votre gestionnaire document.ready. Il devrait être }); et non )};

EDIT: Je crois que Nick Craver sur le bug IE7, et je pense côté d'utiliser un attribut personnalisé dans le balisage, vous pouvez faire ce qui suit ...

$(".up,.down").click(function(){ 
    var $this = $(this); 
    var oldText = $this.text(); 
    $this.text(''); 
    var val = this.value; 
    $this.text(oldText); 
    alert(val); 
}); 

Test it here Si vous avez IE7 s'il vous plaît!

+0

Dans IE7, le 'value' est le texte entre les balises, il n'est pas prudent d'utiliser ici un attribut' value'. Par exemple: http://allinthehead.com/retro/330/coping-with-internet-explorers-mishandling-of-buttons –

+0

@Nick Intéressant. Je te prendrai au mot; Je n'ai pas un moyen simple de tester IE7 maintenant. –

+0

Dans sa défense ... il est antérieur à l'élément '

Questions connexes