2011-09-13 183 views
0

我有兩個使用jstl構建的選擇列表。一個包含所有可用的人員,另一個包含適用的人員。我想從所有可用人員列表中刪除適用的人員。jquery兩個選擇 - 刪除基於另一個的選項

$(document).ready(function() { 
    $("#chosenList").each(function() { 
    $("option", this).each(function(){ 
     $("#chooseList option[value='"+this+"']").remove(); 
    }); 
    }); 
}); 

我認爲上述可行,但事實並非如此。有人能指出我的方式錯誤嗎?

+0

你可以加載這個,和兩個列表(如果不是全部,在一個示例格式)到http://jsfiddle.net? – hookedonwinter

+0

之前從未使用過。你可以在[link](http://jsfiddle.net/fM2uV/2/)上訪問它嗎? – Risu

回答

0

我以前遇到過這種問題。將其更改爲:

$(document).ready(function() { 
    $("#chosenList").each(function() { 
    $("option", $(this)).each(function(){ 
     $("#chooseList option[value='"+$(this).val()+"']").remove(); 
    }); 
    }); 
}); 

注意$()周圍this?這是因爲this是一個'純粹的'JavaScript對象 - 不是jQuery對象,因此沒有.val()函數。將$()放在它的周圍將它轉換爲一個jQuery對象。

+0

完美!那是我做錯了。謝謝。 – Risu

+0

http://jsfiddle.net/xfbQg/上的工作示例。 @Risu:沒問題。樂意效勞。我沉迷於這個東西哈哈 – ClarkeyBoy

0

嘗試

$(document).ready(function() { 
    $("#chosenList option").each(function() { 
     $("#chooseList option[value='"+$(this).val()+"']").remove(); 
    }); 
}); 

編輯:現在我看了一下詳細的代碼片段我不知道爲什麼你用兩個嵌套的每個功能。我希望你沒有幾個選擇與ID #chosenList ...無論如何,我會說這應該現在...

+0

帶我來回看幾個變化。對於那些做同樣的事情,@Tomm在第4行中將'.val()'添加到'this'。 – hookedonwinter

+0

這也不起作用。 – Risu

+0

我想我的問題是我跟着這個例子[鏈接](http://blog.jeremymartin.name/2008/02/easy-multi-select-transfer-with-jquery.html),它使用'$()。ready ()'我不推薦。試圖添加我的代碼打破了功能。 – Risu

相關問題