2013-05-16 72 views
6

我有下面的示例代码,创建一个对象集合。jQuery从对象集合中删除对象

如何删除其中一个对象? (例如$ 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 。

谢谢!

+0

'$()'从1.4开始才开始工作吗?除此之外,你可以与我们分享这段代码应该做什么吗? –

+0

顺便说一句,'$ TestList'暗含全局,这是一个坏主意。 –

+0

@Jack:在1.4之前,'$()'会返回一个包含'document'元素的jQuery对象。 – Matt

回答

10

评论

首先,这是非常不明显的你的代码是应该做的,但这里有一些问题:

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]; 
+0

非常感谢! 这是一个完全减少版本的代码,只有绝对的基础知识,所以是的,它有点开放,所以很抱歉。 但你的解释给了我很多值得看的,非常感谢!当你不真正了解要使用的单词时,现在很难找到你想要做的事情。这是我为所有其他功能提供对象的方式,而无需将它传递到任何地方。 和删除正是我所需要的。 :-) –

7

使用delete myObject,不myObject.delete

+0

顺便说一下,这只是JavaScript,并将工作没有jQuery – Michiel

+0

不会完全删除对象。相反,它会将其视为“空”。 – Fizzix