2011-01-02 1 views
0

J'essaye actuellement de mettre à jour mon site Web avec quelques fonctions de jQuery. Comme toujours avec le développement Web IE est une douleur.jQuery this.text ne fonctionne pas dans IE après l'événement en direct

J'ai une liste d'autosuggestion qui ressemble à ceci:

<div id="suggestionBox"> 
    <ul> 
     <li> 
      <a class="entry" style="display:block;" href="#">somesuggestion</a> 
     </li> 
     ... 
    </ul 
</div> 

Bien sûr, les suggestions sont acquises à partir d'un serveur, donc j'utiliser une fonction load() chaque fois que le champ d'entrée est modifiée. Cela fonctionne très bien. Le problème est, je veux que le champ de saisie soit complété quand une suggestion est cliquée. J'utilise le code suivant pour que:

$(".entry").live('click', function() { 
    $("#" + $("#suggestionBox").data('input')).val(this.text); 
    //and some more stuff 
}); 

Le champ de données pour le suggestionBox est réglé lorsque le champ d'entrée se concentrer.

Cela fonctionne parfaitement bien dans Chrome et FireFox mais pas dans IE. this.text dans le code ci-dessus renvoie undefined.

Je ne sais pas pourquoi cela ne devrait pas fonctionner pour IE. Quelqu'un peut-il m'aider?

Merci.

+0

Voulez-vous sélectionner un champ dont l'ID est désigné par une donnée sur l'élément '# suggestionBox'? C'est un peu peu orthodoxe ... – lonesomeday

+0

Non, j'ai besoin de reaplcae la valeur du champ de saisie avec quelle que soit la valeur de la suggestion cliquée. Et puisque le champ d'entrée n'a plus de focus une fois que vous cliquez sur la suggestion je viens de passer le champ d'entrée ID sur la boîte à suggestions – lordstyx

Répondre

9

Pourquoi ne pas utiliser jQuery?

$(this).text() 

An a element has no text property in IE.

+0

Hah j'étais si proche! J'ai essayé $ (this) .text Merci et la personne ci-dessous ou ci-dessus (Il est en dessous de ce poste pour moi)! – lordstyx

+0

vous voulez dire la personne ci-dessus ..;) –

+1

@Shadow Wizard, @lordstyx: * ci-dessus *, * ci-dessous * est totalement hors de propos et change avec la vue que vous sélectionnez pour les réponses (et est aléatoire si vous triez par votes et réponses le même nombre de votes). Nommer les réponses par la personne qui l'a créé est beaucoup mieux. –

2

Vous devez utiliser la fonction text() jQuery, pas un bien, puisque le sous-jacent propriété DOM est un navigateur spécifique:

$("#" + $("#suggestionBox").data('input')).val($(this).text());