我有4個選擇框,每個都包含完全相同的數據:jQuery的刪除選項除了當前
- 騎
- 釣魚
- 吸菸
- 飛
如果我在選擇框[0]中選擇「騎馬」,我想從除了當前選擇框以外的每個剩餘選項中刪除選項。
我試過select:not(:first-child),但是這會刪除,只有當第一個孩子是選擇,而不是任何其他。
基本上,我需要從所有下拉列表中刪除選定的選項,除了我所做的選擇。
我有4個選擇框,每個都包含完全相同的數據:jQuery的刪除選項除了當前
如果我在選擇框[0]中選擇「騎馬」,我想從除了當前選擇框以外的每個剩餘選項中刪除選項。
我試過select:not(:first-child),但是這會刪除,只有當第一個孩子是選擇,而不是任何其他。
基本上,我需要從所有下拉列表中刪除選定的選項,除了我所做的選擇。
試試這個:
$('#select1').on('change', function() {
var val = this.value;
$('select').not(this).children().filter(function() {
return this.value === val;
}).remove();
});
即每一個<select>
即not this
,獲得其children
,但filter
的,其.value
是不是像我一樣的人,和他們remove
。
在
工作演示如果您需要的時候第一項改爲別的東西來重新添加元素,你可能會考慮只克隆整個第一select
同時過濾掉不需要的項目。
在這種情況下,過濾器將需要!==
,因爲我們希望所有的元素,除了相匹配的一個,即
$('#select1').on('change', function() {
var val = this.value;
$('select').not(this).empty().append($(this).children().filter(function() {
return this.value !== val;
}).clone());
});
我想你會讓這個過於複雜。指定'.children('option')'可以簡單地爲'.children('[value ='+ val +']')'。不需要在'.children()'中指定'option'作爲標籤,並且使用屬性equals選擇器可以避免使用'filter'。 – maxedison 2012-02-02 12:23:29
@maxedison作爲原則問題我不在選擇器中使用字符串連接,這是不安全的。 – Alnitak 2012-02-02 12:27:38
@Alnitak你會介意爲什麼字符串連接在這個莊園不安全的例子嗎? – Craig 2012-02-02 12:43:16
工作演示你需要將它們添加回如果選項更改? – 2012-02-02 12:16:00
可能重複的[防止多重選擇相同的值](http://stackoverflow.com/questions/4001805/prevent-multiple-selections-of-same-value) – 2012-02-02 12:16:31
Andy E,很可能是的。但是我確信我可以將步驟重新添加到項目中,將存儲在某個位置的值(如隱藏字段或其他東西)刪除,然後將其添加回來並替換新刪除項目的值。 – JadedEric 2012-02-02 12:30:46