2014-11-23 102 views
-1

我想將選擇列表中的選定選項添加到具有自動創建的每行刪除選項的表格中。如何將選定選項動態添加到表格

所以,當我點擊刪除選項時,整個行應該在表中刪除,該選項應該再次在選擇列表中可用。

我在表中添加了select選項,但它不顯示爲<td>,而是顯示爲<option>

+0

這裏是撥弄我的代碼http://jsfiddle.net/c8q2sggn/ – user13 2014-11-23 11:30:58

回答

1

我剛剛調整了Fiddle並刪除了添加的行。兩次調整 - 爲了方便起見,我添加了添加的選項值作爲數據值屬性的添加的行並添加類中刪除的Del列:

var row = $('<tr data-value="' + opt.val() + '"><td>' + opt.val() + 
      '</td><td></td><td class="delete">Del</td></tr>'); 

然後我說下面的函數從deletd添加選項行和刪除該行:

$("#selectDistriList").on("click", ".delete", function() { 
    dVal = $(this).closest("tr").data("value"); 
    $("#distriList").append('<option value="' + dVal + '">' 
     + dVal + '</option>'); 
    $(this).closest("tr").remove(); 
}); 

更新:對於是否有可能將鏈接添加到每個選項的註釋的問題我剛剛調整了Fiddle一些示例鏈接。
以下調整:我爲每個選項添加了屬性data-link,例如,

<option value="A" data-link="http://www.stackoverflow.com">A</option> 

,將被附加到該表中的行被調整爲具有鏈路爲對<tr>data-link屬性並設置鏈接到值:

var row = $('<tr data-value="' + opt.val() + '" data-link="' 
      + opt.data("link") + '"><td><a href="' + opt.data("link") 
      + '" target="_blank">' + opt.val() + '</a></td><td></td> 
      <td class="delete">Del</td></tr>'); 

上刪除該行的功能單擊調整爲刪除行的data-link值設置爲一個附加選項:

$("#selectDistriList").on("click", ".delete", function() { 
    dVal = $(this).closest("tr").data("value"); 
    dLink = $(this).closest("tr").data("link"); 
    $("#distriList").append('<option value="' + dVal + '" data-link="' 
    + dLink + '">' + dVal + '</option>'); 
    $(this).closest("tr").remove(); 
}); 

更新:對於在評論中如何添加多個選擇選項的問題我剛剛調整爲add功能Fiddle

如下調整:

$('#Add').click(function() { 

if ($('#distriList option:selected').val() != null) { 
    $('#distriList option:selected').each(function() 
    { 
     var tempSelect = $(this).val(); 
     var inbtn = $('#Include').val(); 
     var opt = $('#distriList option[value=' + tempSelect + ']').remove(); 
     var row = $('<tr data-value="' + opt.val() + '" data-link="' + opt.data("link") + '"><td><a href="' + opt.data("link") + '" target="_blank">' + opt.val() + '</a></td><td></td><td class="delete">Del</td></tr>'); 
     row.appendTo('#selectDistriList'); 
     $("#distriList").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected"); 
     $("#selectDistriList").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected"); 
     $("#selectDistriList").val(tempSelect); 
    });  
} 
else 
{ 
    alert("Before add please select any position."); 
} 
}); 

而是隻增加$('#distriList option:selected')的,因爲這隻會增加第一個選擇的選項.each()將遍歷所有選定的選項並添加它們。

參考:http://api.jquery.com/each/

+0

它工作得很好..是否有可能給表中的A,B,C值的鏈接。每個值都將有其獨特的鏈接。 – user13 2014-11-23 12:25:57

+0

@ user13很高興我能夠幫忙。我已經更新了我的調整答案,以將鏈接添加到值。 – 2014-11-23 13:43:43

+0

非常感謝它,它完美的工作.. – user13 2014-11-23 14:20:52

0

要添加<option>標籤表,但它需要<tr>

var opt = $('#distriList option:selected').remove(); 
var row = $('<tr><td>' + opt.val() + '</td><td>Add</td><td>Del</td></tr>'); 
row.appendTo('#selectDistriList'); 

見更新的jsfiddle:http://jsfiddle.net/c8q2sggn/1/

+0

它的工作原理well..However,如果我是特別的行中點擊刪除按鈕,那麼它應該是刪除並應在選擇列表中提供。如何實現這個? – user13 2014-11-23 11:53:16

+0

查看@matthias_h的答案 – whyleee 2014-11-23 12:00:11

+0

是否可以在表中給出A,B,C值的鏈接。每個值將有其獨特的鏈接 – user13 2014-11-23 12:42:24