1

J'ai un div qui est retourné à partir d'un appel ajax qui contient un a. J'ai besoin de cliquer dessus en javascript, mais je ne peux pas trouver un moyen qui fonctionne à la fois IE6 et FF.En cliquant sur Une balise dans IE6 et FF en utilisant jQuery

Cela fonctionne en FF, mais génère un objet requis erreur dans IE6.

$('#mylink').click(); 

Cela fonctionne dans IE6, mais génère un $ ("# MyLink") get (0) .cliquez n'est pas une erreur de fonction dans FF.

$('#mylink').get(0).click(); 

Vous ne savez pas pourquoi et quel type de solution est disponible?

EDIT:

en mode de déclenchement retourne la même erreur que de cliquer dans IE6:

$('#mylink').trigger('click'); 

EDIT:

Placer le code dans une minuterie ne change pas le comportement:

setTimeout(function() { 
    $('#mylink').click(); 
}, 100); 

EDIT:

Pour contourner ce problème, cette fonction. Mais ce serait bien de mieux comprendre le problème. Ce n'est pas un problème jQuery seul (ou peut-être du tout). L'erreur JavaScript IE6 provient de MicrosoftAjax.js, donc cela a quelque chose à voir avec ça.

var anchor = $('#mylink'); 
if (anchor.get(0).click) { 
    anchor.get(0).click(); 
} 
else { 
    anchor.click(); 
} 
+2

Peut-on voir le code? Si la méthode click() échoue, c'est probablement parce qu'elle a été appelée avant que la variable dynamique ne soit réellement insérée. –

+0

L'événement MS Ajax OnSuccess appelle une méthode qui exécute le code ci-dessus. J'ai essayé de placer le code dans un setTimeout en pensant qu'il avait besoin de temps pour terminer l'insertion, mais pas de joie. Je devrais créer une implémentation simplifiée pour l'afficher. – ongle

Répondre

0

Si $ (« # MyLink ») cliquez sur() n'est pas found mais $ ("# mylink"). get (0) .click() est, alors pourriez-vous l'utiliser comme base pour un test?

par exemple

if ($("#mylink").click) 
{ 
    $("#mylink").click() 
} 
elseif ($("#mylink").get(0)) 
{ 
    $("#mylink").get(0).click(); 
} 

Je sais que loin d'être idéal, mais telle est la façon des choses face à des IE6

+0

+1 Étant donné que jQuery renvoie un objet jQuery valide avec un clic, le test doit être inversé. Je vais mettre à jour la question avec cette info. – ongle

+0

Ah oui, bien sûr. Pardon – Addsy

0

Comment utiliser un trigger?

$("#mylink").trigger('click'); 
1

La méthode get renvoie l'élément DOM. Vous devriez utiliser eq à la place.

$('#mylink').eq(0).click(); 
+1

Cela renvoie la même erreur que l'appel à .click(). Je pense que la raison .get (0) fonctionne IS car elle renvoie l'élément DOM qui semble avoir une méthode click dans IE6 mais pas dans FF. Je suppose que ceci réduit le problème à la raison pour laquelle l'élément DOM est trouvé mais jQuery ne peut pas le 'cliquer'. – ongle

0

Essayez:

$('#mylink').trigger('click'); 

devrait être le même que votre premier exemple, bien que ... Faites des alertes dans IE pour vous assurer que l'élément existe et tout ce qui (peut-être vous avez un ID dupliqué quelque part ou quelque chose?).

+0

Oui, j'ai essayé de déclencher aussi mais ça fait la même chose que .click() – ongle

0

L'objet requis est susceptible d'être généré car IE ne peut pas trouver le sélecteur #mylink à temps. Assurez-vous de faire l'appel dans la fonction de rappel de la réussite ou de fournir une fonction de temporisation qui vérifie si l'élément est disponible avant le déclenchement du clic.

window.setTimeout(function() { 
    if ($("#mylink").length) { 
     $("#mylink").trigger('click'); 
     return false; 
    } 
    window.setTimeout(arguments.callee, 1); 
},1); 
+0

C'est ce que je pensais aussi mais le placer dans une minuterie n'a rien changé, même si je l'ai paramétré sur 5 secondes. – ongle

+0

@ongle: qu'est-ce que l'alerte ($ ("# mylink"). Length) vous dit? – David

+0

@David, La longueur est 1. Aussi près que je peux dire le sélecteur retourne un objet jQuery valide. – ongle

Questions connexes