shu*_*uji 24 javascript jquery offset
我正试图从元素中获取顶部,但是我得到了这个错误,它意味着什么,我该如何摆脱它?
$(".hover").offset().top
>Uncaught TypeError: Cannot read property 'top' of undefined
$(".hover")
[div.hover, prevObject: x.fn.x.init[1], context: document, selector: ".hover", jquery: "2.0.3", constructor: function…]
[prevObject: x.fn.x.init[1], context: document, selector: ".hover", jquery: "2.0.3", constructor: function…]
Run Code Online (Sandbox Code Playgroud)
当我尝试将它放入嵌套的droppable中时,这会发生在jqueryui的drop事件中.
$.fn.makeDroppable = function(){
$(this).droppable({
drop: function(event, ui) {
console.log($(".hover"));
console.log($(".hover").offset().top);
$(".hover").makeDroppable().removeClass("hover");
},
over: function(event, ui) {
$("<div>").addClass("hover").appendTo(this);
}
});
}
$(".container").makeDroppable();
<div class="container"></div>
Run Code Online (Sandbox Code Playgroud)
小智 21
如果DOM没有运行jQuery的元素,jQuery将返回prevObject.您可能会在运行时看到源中的元素,但它并未绑定到DOM,因此它显示了prevObject.尝试再次检查您的js文件,或者在此处粘贴代码.
虽然错误与之无关prevObject,但我会解释它,因为它是标题中的一个问题.
jQuery .end()
结束当前链中最近的过滤操作,并将匹配元素集返回到先前的状态.
要返回其先前的状态,jQuery将prevObject在过滤操作之前返回包含所选元素的内容,例如.find(),.filter()和.children().
例
$('#target').append($('div').find('input').remove().end());
Run Code Online (Sandbox Code Playgroud)
$('div')将选择所有div元素.--- (*1)
然后,$('div').find('input').remove()将选择所选div元素内的所有输入元素并删除这些输入元素.
之后,$('div').find('input').remove().end()将在.find('input')调用之前返回元素.因此,除了删除div中的所有输入元素之外,它将返回与(*1)中相同的所有div元素.返回的元素存储在prevObject.
最后,返回元件(*1)被附加到#target.
.end()的文档:https://api.jquery.com/end/
| 归档时间: |
|
| 查看次数: |
25454 次 |
| 最近记录: |