【问题标题】:LINQ-For-Javascript Nested ArraysLINQ-For-Javascript 嵌套数组
【发布时间】:2012-03-17 11:51:22
【问题描述】:

Linq-For-Javascript 库包含在“jQuery objects”和“Enumerable objects”之间转换的函数:toEnumerable() 和 TojQuery()。考虑这两行之间的区别:

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

从 jQuery 转换为 Enumerable 再转换回 jQuery 并没有为您提供一开始的内容。最终结果是一个元素数组的数组,每个子数组的长度为 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-For-Javascript 不能那样工作。

那么,我的问题

  1. 这是为什么呢?
  2. 我做错了吗?
  3. 如果没有,有什么好的解决方法吗? (将array of 1-element arrays 转换为array of elements?)

谢谢!

【问题讨论】:

    标签: javascript jquery arrays linq


    【解决方案1】:

    JQuery 根据类型处理操作。在代码的第一行,如果找到所有 HTML TR 对象,并且借助此信息,它可以将必要的函数附加到找到的对象。

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

    但是,将其更改为可枚举对象后,它无法理解,因为它似乎不再是 HTML 对象,而是变成了任何其他类型的对象。因此,jquery 无法将函数附加到它。

    $('tr').toEnumerable()
    

    【讨论】:

      猜你喜欢
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      • 2020-05-27
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多