【问题标题】:What is prevObject and why is my selector returning that?什么是 prevObject,为什么我的选择器会返回它?
【发布时间】:2013-10-31 02:35:08
【问题描述】:

我试图从一个元素中获取顶部,但我收到了这个错误,这是什么意思,我该如何摆脱它?

$(".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>

【问题讨论】:

  • 这是因为你的页面中没有myelement类的元素
  • @ArunPJohny 有,$(".hover") 返回不允许我使用最高值的元素和 prevObject。
  • 您无需担心prevObject。它用于内部目的。您的 DOM 选择正在查找 0 元素。
  • 是的,我现在可以看到,显然问题是由调用嵌套的 droppables 事件引起的。谢谢。

标签: javascript jquery offset


【解决方案1】:

如果 DOM 没有运行 jQuery 的元素,jQuery 返回 prevObject。您可能会在运行时在源代码中看到该元素,但是,它没有绑定到 DOM,因此它显示 prevObject。尝试再次检查您的 js 文件,否则将代码粘贴到此处。

【讨论】:

    【解决方案2】:

    虽然该错误与prevObject无关,但我会解释它,因为它是标题中的问题。

    jQuery .end()

    结束当前链中最近的过滤操作,并将匹配的元素集合返回到之前的状态。

    要返回之前的状态,jQuery 会返回prevObject,其中包含在应用过滤操作之前选择的元素,例如.find().filter().children()

    示例

    $('#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/

    【讨论】:

      猜你喜欢
      • 2016-04-02
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 2021-09-11
      相关资源
      最近更新 更多