2012-02-28 109 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()