Запрос совместимости кликов jQuery — Safari

#javascript #jquery #safari

#javascript #jquery #safari

Вопрос:

У меня есть функция jQuery, которая не работает в Safari, и та, которая работает, которую я, по сути, только что поднял из вопроса о переполнении стека.

Мне просто любопытно, почему этот не работает, а другой нет?

 $(function(){
$("div.polycontainer").children().on("click", function(){
    var index = $(this).index();
    var time = [500, 600, 700];
    var element = ["div.servicesHeader", "div.developmentHeader", "div.aboutHeader"];
    var show = $(element[index]).offset().top;
    $('html').animate({scrollTop: (show) - 115}, (time[index]));
    });
    });
 

Это работает:

 $("#fromTHIS").click(function () {
    $("html, body").animate({ scrollTop: $("#toTHIS").offset().top }, 500);
    return true;
});
 

Я попытался использовать .click вместо .on («click») В первом примере, единственное отличие в том, что я не создал массив и т. Д. Во втором — Просто хотел сначала протестировать его функциональность.

Почему это так?

Комментарии:

1. on("click", function... и .click( function... в основном это одно и то же

2. Ваш второй код отличается от первого, поскольку у вас нет $("html, body")

3. Хорошо, но первый код работает в Firefox, но не в Safari, а второй код работает в обоих.

4. Вы изменили код в первом, чтобы иметь $("html, body") ??????

5. Ну, html не сработал, но ввод тела сработал. Как странно, большое спасибо.

Ответ №1:

Строка

 $('html').animate({scrollTop: (show) - 115}, (time[index]));
 

необходимо

 $('body, html').animate({scrollTop: (show) - 115}, (time[index]));
 

нравится пример, который работает.

Комментарии:

1. Как мне указать это как ответ?