używam następujący kod:.top brakuje w plikach definicji języka jQuery?
$('html, body').animate({ scrollTop: $($(this).attr('href')).offset().top });
Typescript daje mi komunikat o błędzie:
The property 'top' does not exist on value of type 'Object'
Domyślam coś brakuje pliku definicji jQuery. Czy ktokolwiek widział ten problem, czy jest to coś, czego zwykle nie używa się w jQuery? To coś, czego wcześniej nie widziałem.
Aby uzyskać więcej informacji. Oto kod, gdzie to ma zastosowanie:
$.fn.buildTableOfContent = function() {
"use strict";
var h2 = this.find('h2');
if (h2.length > 0) {
var h1 = this.find('h1:first');
if (h1.length === 0) {
h1 = this.prepend('<h1>Help</h1>').children(':first');
}
var menu = h1.wrap('<div class="h1 with-menu"></div>')
.after('<div class="menu"><img src="/Content/images/menu-open-arrow.png" width="16" height="16"><ul></ul></div>')
.next().children('ul');
h2.each(function (i) {
this.id = 'step' + i;
menu.append('<li class="icon_down"><a href="#step' + i + '">' + $(this).html() + '</a></li>');
});
menu.find('a').click(function (event) {
event.preventDefault();
$('html, body').animate({ scrollTop: $($(this).attr('href')).offset().top });
});
}
return this;
};
Czy nie robisz 'offsetu() {top: numer; left: number; }; 'przy użyciu'?: 'opcjonalnego w definicji TS? –
@mcpDESIGNS Myślałem, że to zadziałało, ale wciąż używałem edytowanego jquery.d.ts, który miał zmodyfikowaną deklarację. W każdym razie, nie, uczynienie elementu "offset" opcjonalnym oznacza tylko, że nie musi być zaimplementowane, aby mieć poprawną implementację interfejsu 'JQuery'. Nie wydaje się, że możesz go użyć do ukrycia członków; jeśli spróbujesz dodać go do pliku jquery.d.ts, uniemożliwisz inne przeciążenia 'offset'. Co więcej, musisz zadeklarować to jako "offset"? :() => {top: liczba; left: number; }; 'nawet jeśli jest poprawny pod względem składniowym. – nxn