2012-02-28 105 views
3

Linq-For-Javascript庫中包含的函數在「jQuery objects」和「Enumerable objects」之間轉換:toEnumerable()和TojQuery()。考慮這兩條線之間的區別:從轉換到jQuery的可枚舉,並返回到jQuery的不給你,你開始用什麼LINQ-For-Javascript嵌套陣列

$('tr'); // returns array of tr 
$('tr').toEnumerable().TojQuery(); // returns array of tr[1] 

。最終的結果是一組元素數組,每個子數組的長度爲1.我需要使用Enumerable,所以這只是我的問題的一個簡便示例。

這意味着,要獲得一個元素的ID,你需要做到以下幾點:

$('tr')[0].id; // returns "myID" 
$('tr').toEnumerable().TojQuery()[0][0].id; // returns "myID" 

我很驚訝這一點,因爲即使我已經涉嫌回去TojQuery()中,通過TojQuery()返回的對象不具有典型的jQuery的工作電話:

$('tr').find('td').length; // returns 170 (in my case) 
$('tr').toEnumerable().TojQuery().find('td').length; // returns 0 (BAD) 

我想它,如果兩行返回170,但顯然LINQ的換JavaScript不工作的方式。

所以,我問題

  1. 這是爲什麼?
  2. 我做錯了嗎?
  3. 如果不是,有什麼好的解決方法? (轉換array of 1-element arraysarray of elements?)

謝謝!

回答

0

JQuery根據類型處理操作。在代碼的第一行中,如果找到所有HTML TR對象並且藉助這些信息,它可以將必要的功能附加到找到的對象上。

$('tr').find('td') 

但是,你改變它之後enumarable對象,因爲它似乎不再是一個HTML對象,而不是它成爲任何其他類型的對象也想不明白。因此,jQuery不能附加一個函數。

$('tr').toEnumerable()