2012-03-14 41 views
0

可有一个人帮我这个请,因为IM撞我的头现在墙上:(试图将值从一个行复制到另一个使用JQuery

我有一个表连接到这大约是13列一个JQuery的上下文菜单,其中用户可以右键单击表并选择复制下来,如果他们这样做,那么我需要将值从选定的行复制到其他行,到目前为止,我有一个JQuery函数正在工作一个程度,但由于某种原因,当我运行这个它增加了一个新的行是不是我想要的,我想要做的就是复制行中的值并填充其他行而不添加新行是可能的?

继承人我的JQuery

$(function() { 
    $('#grdvHandSets>tbody>tr').contextMenu([ 
     { 
     'Copy Down': function(menuItem, menu) { 
      var tr = $(this), 
       tr2 = $(this).clone(true, true).insertAfter(this) 
       tr.find(':input:not(.phonenumber)').each(function() { 
        //console.log(this.id) 
        tr2.find("[id='" + this.id + "']").val($(this).val()) 
       }) 
       tr2.find('.phonenumber').val('') 
       $('#grdvHandSets .gvItem').each(function(i) { 
        $(this).text(i + 1) 
       }) 
     }} 
    ], { 
     theme: 'vista' 
    }) 
})​ 

有人可以帮我.... :(

+0

_“由于某种原因,当我运行这个它增加了一个新行” _ - 那将是因为你用'。克隆()'(它使一个副本)。您能否展示您的HTML样本?另外,当您说“复制到其他行”时,是否意味着所选行上方的行不会收到复制的值? – nnnnnn 2012-03-14 08:46:31

+1

我的编辑过后请看你的问题来源,请在这里了解如何取消注册。 – gdoron 2012-03-14 08:46:32

+0

当有人回答您的问题时,请点击答案旁边的复选框。这有助于建立您的声誉。 – 2012-03-17 06:31:35

回答

0

你自己写了这段代码吗?它使得一个新行,因为这是你告诉它做的事:

tr2 = $(this).clone(true, true).insertAfter(this) 

要在当前操作后得到的所有行,你可以使用nextAll功能。

tr2 = tr.nextAll(); 

您也可能要重新命名tr2的东西更符合逻辑,就像nextRows

+0

没有即时通讯从现在离开公司,从未做过Jquery的人即时通讯学习它,这是他离开时留下的,基本上他们点击了哪一行,然后选择复制下来我需要将值从该行复制到另一个不插入一个新行希望使感? – 2012-03-14 08:59:05

+0

感谢安迪雷这工作改变了以下线,现在工作正常,如果你不介意,我只是被告知用户将有能力选择有多少列应该在表中,因此例如会有一个文本框和桌子上方的按钮他们在文本框中输入的数字将决定有多少行,当我在文本框中添加数字20并按下按钮时,它会添加20行,这很好,但是当我在添加行后,右键单击表的上下文菜单不再起作用? – 2012-03-14 09:10:23

+0

这可能与您使用的contextMenu插件有关,它可能会将右键单击事件分配给您传入的选择器,但是如果您动态添加发生在单击事件分配后的新行。查看contextMenu插件文档,并在出现问题时打开一个新问题。 – 2012-03-14 18:20:20

0

那么对于初学者使用:

tr2 = $(this).clone(true, true).insertAfter(this) 

它会生成新的条目。您应该更改行的文本/ html。插入实际上追加新元素,在这种情况下,它是您所选行的引用。

+0

你好,谢谢你的回应,你是什么意思,通过改变文本/ HTML即时通讯新的JQuery,所以即时学习,因为我去... – 2012-03-14 08:52:55

相关问题