如何将对象投射到桌子上?

Posted

技术标签:

【中文标题】如何将对象投射到桌子上?【英文标题】:How can I cast an object to a table? 【发布时间】:2012-08-14 07:01:34 【问题描述】:

我有一张桌子。现在我克隆了它。当我使用 tablesorter 时,它说不能在类型对象上使用它。

那么,我怎样才能将它转换为对象。

var clonedTable = $('#originalTable').clone(); 
$(clonedTable).tablesorter( 
widgets: ['zebra'],  
headers:  
 0:sorter:false, 
 1:sorter:false,
 2:sorter:false,
 3:sorter:false,
 4:sorter:false  
); 

tablesorter 在这里抱怨:未捕获的类型错误。 object[object object] 没有方法tablesorter

Edit:

深入研究代码...我注意到原因是这一行:

 var clonedTableRows= $('clonedTable tr:gt(0)'); 

看起来 clonedTableRows 是空的……我的语法错了吗?

【问题讨论】:

执行这个console.log( typeof $.fn.tablesorter );。记录了什么? 你真的导入插件源代码jquery.tablesorter.js吗? 我导入了插件源代码。如果我在原始表格上进行表格排序,它工作得很好 @ravi 发布确切的错误消息是个好主意。 @ravi 可能是另一个复制/粘贴错误,但您仍然在引号内引用变量 clonedTable,这是您无法做到的。要获取行,请执行以下操作:$(clonedTable).find('tr:gt(0)')仔细观察引号,因为没有它们你引用了一个javascript变量,但有了它们你引用了一个jQuery选择器。 【参考方案1】:

正如@n***s 所说,引号不应围绕clonedTable 变量。试试这个:

var clonedTableRows = clonedTable.find('tr:gt(0)');

此外,您正在对未附加到 DOM 的克隆对象初始化插件。将克隆的表追加到某处,然后初始化插件:

var clonedTable = $('#originalTable').clone()
      // remove duplicate ID
      .removeAttr('id')
      // append it whatever you want
      .appendTo('body')
      // now that it's in the DOM, initialize the plugin
      .tablesorter( 
        widgets: ['zebra'],  
        headers:  
          0:sorter:false, 
          1:sorter:false,
          2:sorter:false,
          3:sorter:false,
          4:sorter:false
         
      );

【讨论】:

谢谢。我有一个问题:现在我正在对克隆表进行排序。但是我看到我所有的原始表顺序也根据我在克隆表上所做的排序而改变。我不明白为什么这两个有联系。克隆是深拷贝吧?当我对克隆表进行排序时,有没有办法保持原始表的顺序不变? 好吧,我不确定您的代码的其余部分是什么样的,但我会从克隆表中删除 ID...我将编辑原始帖子。哦,除非您使用clone(true),否则它不是“深度”克隆,然后它也会克隆附加到元素的所有事件。

以上是关于如何将对象投射到桌子上?的主要内容,如果未能解决你的问题,请参考以下文章

将 activeX 对象投射到我的对象上的问题

将特定对象投射到另一个对象

如何投射列表视图对象

将对象投射到 T

将 Firebase 快照投射到 Swift 3 对象

将对象投射到父级