Вопрос

У меня есть div который возвращается из ajax-вызова , который содержит a.Мне нужно щелкнуть по нему в javascript, однако я не могу найти способ, который работает как в IE6, так и в FF.

Это работает в FF, но генерирует требуемый объект ошибка в IE6:

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

Это работает в IE6, но генерирует $("#mylink").get(0).click - это не функция ошибка в FF.

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

Есть какие-нибудь идеи о том, почему это так и какое решение доступно?

Редактировать:

Использование триггера возвращает ту же ошибку, что и click в IE6:

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

Редактировать:

Помещение кода в таймер не изменяет поведение:

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

Редактировать:

В качестве обходного пути это работает.Но было бы неплохо лучше разобраться в проблеме.Это проблема не только jQuery (или, возможно, вообще).Ошибка JavaScript IE6 возникает из MicrosoftAjax.js так что это как-то связано с этим.

 var anchor = $('#mylink');
 if (anchor.get(0).click) {
  anchor.get(0).click();
 }
 else {
  anchor.click();
 }
Это было полезно?

Решение

Если $ ("#mylink").click() не найден, но $ ("#mylink").get(0).click() есть, то не могли бы вы использовать это как основу для теста?

например

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

Я знаю, что далек от идеала, но таков порядок вещей при работе с IE6

Другие советы

Метод get возвращает элемент DOM.Вместо этого вы должны использовать эквалайзер.

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

Как насчет использования триггер ?

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

Попробуй:

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

Следует однако будьте таким же, как ваш первый пример...Сделайте несколько оповещений в IE, чтобы убедиться, что элемент существует и все такое (может быть, у вас где-то есть дублированный идентификатор или что-то в этом роде?).

В требуемый объект вероятно, генерируется из-за того, что IE не может найти #mylink выбор во времени.Убедитесь, что вы выполнили вызов в функции успешного обратного вызова или предоставили функцию тайм-аута, которая проверяет, доступен ли элемент перед запуском щелчка:

window.setTimeout(function() {
    if ($("#mylink").length) {
        $("#mylink").trigger('click');
        return false;
    }
    window.setTimeout(arguments.callee, 1);
},1);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top