Frage

Ich habe eine div, die von einem Ajax-Aufruf zurückgegeben wird, die eine a enthält. Ich brauche es in Javascript klicken, aber ich kann nicht einen Weg finden, die sowohl in IE6 und FF funktioniert.

Das funktioniert in FF aber erzeugt ein Objekt erforderlich Fehler in IE6:

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

Das funktioniert in IE6, sondern erzeugt ein $ ( "# mylink"). Get (0) .click ist keine Funktion Fehler in FF.

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

Alle Ideen, warum dies so ist und welche Art von Lösung ist verfügbar?

EDIT:

Mit Trigger gibt den gleichen Fehler wie Klick in IE6:

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

EDIT:

Platzieren Sie den Code in einem Timer das Verhalten nicht ändern:

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

EDIT:

Als Abhilfe können diese Funktionen. Aber es wäre schön, um besser auf die Frage zu verstehen. Dies ist kein jQuery Problem allein (oder vielleicht überhaupt). Der IE6 JavaScript-Fehler kommt aus MicrosoftAjax.js so hat es etwas damit zu tun.

 var anchor = $('#mylink');
 if (anchor.get(0).click) {
  anchor.get(0).click();
 }
 else {
  anchor.click();
 }
War es hilfreich?

Lösung

Wenn $ ( "# mylink"). () Klicken wird nicht gefunden, aber $ ( "# mylink"). Get (0) .click () ist, dann könnte man dies als Grundlage für einen Test verwenden?

zB

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

Weit davon entfernt, ideal Ich weiß, aber so ist der Lauf der Dinge, wenn sie mit IE6 Umgang

Andere Tipps

Die get-Methode gibt das DOM-Element. Sie sollten stattdessen eq verwenden.

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

Wie über einen auslösen ?

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

Versuchen:

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

Soll das gleiche wie Ihr erstes Beispiel sein, ... obwohl einige Warnungen in IE tun, um sicherzustellen, das Element vorhanden ist, und alles, was (vielleicht haben Sie eine duplizierte ID irgendwo oder so?).

Das Objekt erforderlich wird wahrscheinlich erzeugt, weil IE kann nicht die #mylink Wähler in der Zeit finden. Stellen Sie sicher, dass Sie den Anruf im Callback-Funktion Erfolg tun oder eine Timeout-Funktion zur Verfügung stellen, die überprüft, ob das Element vor dem Auslösen den Klick zur Verfügung:

window.setTimeout(function() {
    if ($("#mylink").length) {
        $("#mylink").trigger('click');
        return false;
    }
    window.setTimeout(arguments.callee, 1);
},1);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top