Domanda

Ho un div che viene restituito da una chiamata AJAX che contiene un a. Ho bisogno di clic su di esso in javascript, ma non riesco a trovare un modo che funziona sia in IE6 e FF.

Questo funziona in FF, ma genera un oggetto desiderato Errore in IE6:

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

Questo funziona in IE6, ma genera un $ ( "# MyLink"). Get (0) .Cliccate non è una funzione Errore in FF.

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

Tutte le idee sul perché questo è e che tipo di soluzione è disponibile?

EDIT:

Utilizzo di trigger restituisce lo stesso errore come click in IE6:

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

EDIT:

Mettere il codice in un timer non cambia il comportamento:

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

EDIT:

Per risolvere il problema, questo funzioni. Ma sarebbe bello per capire meglio il problema. Questo non è un problema di jQuery solo (o forse a tutti). L'errore IE6 JavaScript esce MicrosoftAjax.js in modo che abbia qualcosa a che fare con questo.

 var anchor = $('#mylink');
 if (anchor.get(0).click) {
  anchor.get(0).click();
 }
 else {
  anchor.click();
 }
È stato utile?

Soluzione

Se $ ( "# MyLink"). Click () non viene trovato, ma $ ( "# MyLink"). Get (0) .Cliccate () è, allora si potrebbe usare questo come base per un test?

es

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

Lungi dall'essere ideale lo so, ma tale è il modo in cui le cose quando si tratta di IE6

Altri suggerimenti

Il metodo get restituisce l'elemento DOM. Si dovrebbe usare invece ad es.

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

Come sull'utilizzo di un rel="nofollow innescare ?

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

Prova:

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

In caso essere lo stesso del vostro primo esempio, anche se ... Fare alcuni avvisi di IE per assicurarsi che l'elemento esiste e tutto quello che (forse si dispone di un ID duplicato da qualche parte o qualcosa del genere?).

oggetto richiesto è probabilmente generato perché IE non riesce a trovare il selettore #mylink nel tempo. Assicurati di fare la chiamata nella funzione di callback successo o fornire una funzione di timeout che controlla se l'elemento è disponibile prima di far scattare il clic:

window.setTimeout(function() {
    if ($("#mylink").length) {
        $("#mylink").trigger('click');
        return false;
    }
    window.setTimeout(arguments.callee, 1);
},1);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top