什么是prevObject,为什么我的选择器返回它
What is prevObject and why is my selector returning that?
我正在尝试从元素中获取顶部,但是我收到此错误,这是什么意思以及如何摆脱它?
$(".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…]
当我尝试将其放入嵌套的可放置对象时,这发生在 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>
如果 DOM 没有运行 jQuery
的元素,jQuery 将返回 prevObject。您可能会在运行时在源代码中看到该元素,但是,它并未绑定到 DOM,因此,它显示 prevObject。尝试再次检查您的 js 文件,或者在此处粘贴代码。
虽然错误与prevObject
无关,但我会解释它,因为它是标题中的一个问题。
jQuery .end()
结束当前链中最近的筛选操作,并将匹配的元素集返回到其先前状态。
为了返回其先前的状态,jQuery 在应用过滤操作(如 .find()
、.filter()
和 .children()
)之前返回包含选定元素prevObject
。
例
$('#target').append($('div').find('input').remove().end());
$('div')
将选择所有div 元素。 --- (*1)
然后,$('div').find('input').remove()
将选择所选div 元素内的所有输入元素并删除这些输入元素。
之后,$('div').find('input').remove().end()
将在调用.find('input')
之前返回元素。因此,它将返回与 (*1) 中相同的所有div 元素,只是删除了div 中的所有输入元素。返回的元素存储在 prevObject
中。
最后,返回的元素 (*1) 追加到 #target
中。
.end()
的文档:https://api.jquery.com/end/
相关文章:
- 如何使HTML5颜色选择器返回颜色名称而不是颜色代码
- 如何将日期选择器返回的日期格式转换为其他格式
- 当选择器返回多个元素时,使用 JQuery 的 .attr()
- 有没有办法将选择器返回到元素?是$(这个)还是其他方法
- 什么's是jQuery选择器返回的包装集的类型
- 从 jquery 地址选择器返回街道名称
- IE7 jquery 选择器返回“失败”
- 什么是prevObject,为什么我的选择器返回它
- javascript “this” 如何处理来自 jquery 的多个选择器返回
- 扩展jquery选择器返回的数据比它应该返回的要多
- jquery:如果第一个选择器返回为空,有没有一种简明的方法可以有条件地使用第二个选择器
- Jquery日期选择器返回前一天
- 动态添加的jQuery从选择器返回奇怪的结果
- 为什么jquery选择器返回一个数组而不是元素本身
- 角度带日期选择器:返回不一致的时间戳,UTC+0与UTC+12小时
- 如何从选择器返回对象
- 如何从jQuery选择器返回的列表中删除元素
- jQuery选择器返回什么样的对象
- Jquery多选择器返回错误的结果,而不是逐一执行
- 为什么jQuery选择器返回null ?