2012-03-14 51 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

相關問題