2010-03-10 6 views
1

J'essayais de parcourir une collection d'objets et essayais de définir un attribut pour chacun des objets.jQuery - comment définir attr pour 'this' ..?

Voici le code:

$(document).ready(function() 
{ 
    $('#clickButton').click(function() 
    { 
     var hiddenVal = $('#hdnVal').val(); 

     $('*').find('*[tabindex]').each(function(index) 
     { 
      //this.setAttribute('tabindex', hiddenVal + this.getAttribute('tabindex')); 
      $(this).attr('tabindex', 'test'); 
     }); 
    }); 
}); 

Je ne pouvais pas définir l'attribut avec $(this).attr('', ''); mais la façon JavaScript fonctionne très bien. Comment puis-je le faire dans jQuery?

+0

@ Tim: un bon travail sur le code prettification :-) –

Répondre

2

La définition d'une chaîne à tabIndex ne fonctionnera pas, elle doit être un nombre entier.

$(this).attr('tabindex', 'test'); 
alert($(this).attr('tabindex')); 
//^alerts 0 in IE for me, indicating the default is restored 

Essayez un numéro:

$(this).attr('tabindex', 1); 
alert($(this).attr('tabindex')); 
//^alerts 1 
+0

En fait, je voulais avoir une valeur cachée définie dans hiddenVal et préfixe la valeur actuelle avec l'existant . Quand j'ai vérifié dans firebug, la valeur ne changera pas .. est-ce parce que les valeurs sont considérées comme texte? – Amit

+0

@Amit: Peut-être. Essayez de convertir le résultat en un nombre, par exemple '$ (this) .attr ('tabindex', + (hiddenVal + $ (this) .attr ('tabindex')));' –

+0

Hey, il y avait tellement de problèmes de navigateur. Je l'ai fait avec javascript plaine .. de toute façon Merci Andy pour des suggestions .. – Amit