2010-11-04 3 views
2

Y at-il un moyen facile de se référer à la valeur de l'élément qui appelle le .val() ou .text() sans double sélection ou mise en cache?Accéder à la valeur de l'élément en .val(), text(), etc. sans double sélection ou mise en cache

Par exemple:

//NO 
$(this).val($(this).val() + 'something'); 

//NO 
var $this; 
$this.val($this.val() + 'something'); 

Au lieu de cela, utiliser quelque chose comme le

'some string'.replace('str', '$&123'); 
//results - 'some str123ing' 

jeton & $ en .replace() Merci à.

Répondre

8

Vous pouvez passer une fonction à .val(), comme ceci:

$(this).val(function(i, currentVal) { return currentVal + 'something'; }); 
//another example: 
$(this).val(function(i, cVal) { return cVal.replace('str', '$&123'); }); 

Cela fonctionne pour un certain nombre d'éléments, dans la fonction i est l'indice et currentVal est ce que $(this).val() voulez-vous obtenir. Il suffit de retourner dans cette fonction ce que vous voulez que la nouvelle valeur soit.

+0

Excellent! Je n'ai même pas réalisé que val() pouvait prendre une fonction. J'ai besoin de lire l'API plus souvent. Merci; p –

+0

@John - bienvenue :) Je n'ai pas assez lu le titre ... il en est de même pour '.text()' et presque toutes les autres fonctions de setter ('.height()', '.width() ', etc.) –

+0

La mise en cache d'une variable locale aurait probablement moins de frais généraux que la création d'une fonction et la réalisation d'un appel de fonction. Surtout en raison du nombre d'autres variables créées juste pour effectuer l'appel de la fonction ... – zzzzBov

Questions connexes