2013-05-16 87 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