2011-12-07 3 views
2

私はAgentIDList2というmtuli-selectボックスを持っています。オプションの束を選択し、削除ボタンを押すと、それらのオプションをAgentIDList2から完全に削除してください。代わりに、何が起きているのか、要素を削除するたびにインデックスが移動しているので、コードが機能しません。これを回避する方法上の任意のアイデア:jquery .remove()はインデックスを移動します

function remove_agents() { 
var List = $('#AgentIDList2'); 
List = List[0]; 
selected = new Array(); 
for (var i = 0; i < List.options.length; i++) { 
    if (List.options[i].selected) { 
     selected.push(i); 
    } 
} 

// Break it out like this so we don't screw up the indices and pick the wrong item 
for (i=0; i<selected.length; i++) { 
    List.options.remove(selected[i]); 
    } 
} 

任意のアイデア?ありがとう!

答えて

4

はここworking example

$('#AgentIDList2 option:selected').remove(); 

代わりにこれを試してみてください。

+0

であなたのインデックスを調整している修正の事。とてもエレガントです。そして邪悪な素晴らしい例もあります。ありがとう! –

+0

JohnZさん、少し時間をかけてjQuery APIを学ぶと、将来の発展に大いに役立ちます。私は一見それを与えるだろう。 –

0
function remove_agents() { 
var List = $('#AgentIDList2')[0]; 
selected = []; 
for (var i = 0; i < List.options.length; i++) { 
    if (List.options[i].selected) { 
     selected.push(i); 
    } 
} 

// Break it out like this so we don't screw up the indices and pick the wrong item 
for (i=0; i<selected.length; i++) { 
    List.options.remove(selected[i--]); 
    } 
} 

は少しそれをクリーンアップが、それは手動で魔法だforループ(i--

関連する問題