2009-08-03 6 views
1

J'essaie d'utiliser jQuery et ASP.NET. Je colle le contrôle du serveur "ClientID" dans un sélecteur jQuery et j'obtiens une erreur (sans texte d'erreur) du moteur de sélection de Sizzle.Sizzle Selector Engine Erreur

Mon sélecteur ressemble à ceci ...

$('#ctl00_ContentPlaceHolder1__phProfileHeader__filProfileImage') 

Est-il la longueur qui pourrait être l'origine du problème? J'ai re-vérifié l'ID de contrôle plusieurs fois dans le code client et tout semble bien. Alors, quel est le problème? J'utilise la même stratégie dans plusieurs autres endroits et ils fonctionnent bien.

+0

Essayez et expérimentez avec certaines variantes de noms. Pourrait être la longueur, pourrait être le double-underscore. Je me souviens avoir eu un problème avec les ID qui contenaient une barre oblique. Seulement, je n'ai jamais eu d'erreur, je viens juste de recevoir un tableau vide. – montrealist

Répondre

0

Je ne reçois aucune erreur. Je ne pense pas que ce soit lié à jQuery. Pouvez-vous passer l'erreur?

$(document).ready(function(){ 
    console.log($('#ctl00_ContentPlaceHolder1__phProfileHeader__filProfileImage')); 
}); 

Renvoie la div.

4

C'est assez étrange. Quelque chose que j'ai vu utilisé lors du traitement de ces longs ID générés ASP.NET est les filtres de contenu de jQuery. Par exemple, celui-ci cherchera élément de qui est termine attribut id avec « filProfileImage »:

$("[id$=filProfileImage]") 

Essayez cela et voir si ça aide.

http://docs.jquery.com/Selectors/attributeEndsWith#attributevalue

+2

Sera ultra lent car il va analyser chaque élément plutôt que d'utiliser le natif getElementById – redsquare

+1

Je n'étais pas au courant que cette question avait à voir avec la performance. Je devrais également mentionner que cette solution aide à la maintenabilité du code. Par exemple, si le filProfileImage de commande est enveloppé dans un autre contrôle du serveur, un jour, l'identifiant va changer à: ctl00_ContentPlaceHolder1__phProfileHeader__someNewPanel__filProfileImage Ce qui signifie que si vous utilisez un ID exact dans votre JS, vous devez chasser vers le bas et le changer. Tant que l'ID du contrôle serveur filProfileImage ne change pas, cette réponse devrait toujours fonctionner - peu importe où vous le déplacez dans votre fichier aspx. –

1

Êtes-vous sûr que l'erreur se produit dans Sizzle?

Je vérifierait ce que vous obtenez avec

document.getElementBy('ctl00_ContentPlaceHolder1__phProfileHeader__filProfileImage'); 

juste pour vous assurer que le Royaume est disponible. Pas ce grésillement devrait s'en soucier, mais ...

S'il vous plaît envoyer votre message d'erreur.

À votre santé