【问题标题】:jQuery remove object from object collectionjQuery从对象集合中删除对象
【发布时间】:2013-05-16 12:00:21
【问题描述】:

我有以下示例代码,创建一个对象集合。

如何删除其中一个对象? (例如 $TestList 看起来好像“删除我”项从未存在过。 我试过 .remove、.splice、.delete 等,但有人告诉我这不是函数。

执行 typeof($TestList) 会带回对象,并且 typeof($TestList[0]) 似乎也有效。

如果没有一件物品,我当然不必重新创建集合吗?

(function($) { 

jQuery.QuickTest = {
    $TestList: {},
    build: function()
    {
        $TestList={};
        $TestList[0] = 
        {
            title: "part 1"
        };

        $TestList[1] = 
        {
            title: "delete me please"
        };

        $TestList[2] = 
        {
            title: "part 2"
        };

    }
}

jQuery.fn.QuickTest = jQuery.QuickTest.build;   

})(jQuery);

$(document).ready(function() {

$().QuickTest(
{
})
});

我们使用的是 jQuery 1.3。

谢谢!

【问题讨论】:

  • $() 不是从 1.4 开始工作的吗?除此之外,你能和我们分享一下这段代码应该做什么吗?
  • 顺便说一句,$TestList 隐含全局,这是个坏主意。
  • @Jack:在 1.4 之前,$() 会返回一个包含 document 元素的 jQuery 对象。
  • @Matt Ah ...好吧,这让这段代码更难理解;-)

标签: jquery object


【解决方案1】:

评论

首先,您的代码应该做什么并不明显,但这里有一些问题:

jQuery.QuickTest = {
    $TestList: {},
    build: function()
    {
        $TestList={};

您定义了jQuery.QuickTest.$TestList,但在build() 内部声明了一个全局 对象$TestList。

jQuery.fn 下声明的函数应该作用于一组匹配的元素(由this 引用)并返回它;你的函数两者都没有。

答案

回答您的一些问题:

  1. .remove() 是一个 jQuery 函数,用于从 DOM 中移除节点,需要在 jQuery 对象上调用。

  2. .splice() 仅适用于 Array,即使您像访问 $TestList 一样访问它,它仍然只是一个 Object。

  3. .delete() 不是我知道的任何函数 ;-)

可能的解决方案

要从$TestList 中删除条目,您可以按以下方式使用delete:

delete $TestList[1];

【讨论】:

  • 非常感谢!这是我的代码的完全精简版本,只有绝对基础,所以是的,它有点开放,对此感到抱歉。但是你的解释让我看了很多,所以非常感谢!当你真的不知道要使用的词时,这些天很难找到你想要做的事情。这是我为我的所有其他功能提供一个对象的方式,而不必在任何地方传递它。而删除正是我所需要的。 :-)
【解决方案2】:

使用delete myObject,而不是myObject.delete

【讨论】:

  • 顺便说一句,这只是 javascript 并且可以在没有 jQuery 的情况下工作
  • 不会完全删除对象。相反,它将保留为null。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多