Ich habe eine jsfiddle erstellt, um den Fehler anzuzeigen.this.offset ist keine Funktion innerhalb einer Klick-Funktion
https://jsfiddle.net/v5fjjwmj/2/
Der Fehler ist, daß _this.offset nicht eine Funktion ist. Ich habe diese Konsole angemeldet und es war das <li>
Element, auf das ich geklickt habe, also bin ich verwirrt, warum das nicht funktionieren würde.
HTML
<div id="replace">
Replace this
</div>
<ul id="list">
<li class="item">TEST</li>
<li class="item">TEST</li>
<li class="item">TEST</li>
</ul>
JS:
$('.item').click(function(e){
var _this = this;
var topx = _this.offset().top;
var leftx = _this.offset().left;
var moveArea = $('#replace').offset().top;
var moveLeft = $('#replace').offset().left;
var moveUp = topx - moveArea - 50;
_this.css('position', 'absolute').css('top', moveUp).css('zIndex', 50).css('left', leftx);
_this.animate({
top: -50,
left: moveLeft
}, 300)
});
CSS:
#replace {
height: 50px;
width: 100px;
background-color: green;
}
#list {
height: 200px;
overflow-y: scroll;
}
.item {
height: 50px;
width: 100px;
background-color: blue;
}
Ich möchte auch eine Animation erstellen, so dass der Artikel, den ich in der Liste klicken bewegt sich nach oben zu ersetzen das grüne Kästchen "Replace this", wenn auch jemand damit helfen könnte.
Verwenden $ (this) anstelle von –