我有幾個選擇列表,它們都有相同的內容。我想要的是當一個選項被選中時,其他選項將被禁用。使用這種選擇.not(這個)不起作用
<div class="social-option">
<select>
<option selected="selected" value="facebook">facebook</option>
<option value="0"></option>
<option value="twitter">twitter</option><!-- If I select this -->
<option value="linkedin">linkedin</option>
<option value="instagram">instagram</option>
<option value="flickr">flickr</option>
</select>
</div>
<div class="social-option">
<select>
<option selected="selected" value="facebook">facebook</option>
<option value="0"></option>
<option value="twitter">twitter</option><!-- then this is disabled -->
<option value="linkedin">linkedin</option>
<option value="instagram">instagram</option>
<option value="flickr">flickr</option>
</select>
</div>
<div class="social-option">
<select>
<option selected="selected" value="facebook">facebook</option>
<option value="0"></option>
<option value="twitter">twitter</option><!-- and this also is disabled -->
<option value="linkedin">linkedin</option>
<option value="instagram">instagram</option>
<option value="flickr">flickr</option>
</select>
</div>
:
$('.social-option select').on('change', function() {
var newSelected = $('option:selected', this).val();
var newSelectedSiblings = $('.social-option select').find("option[value=" + newSelected + "]");
newSelectedSiblings.not(this).each(function() { //here is the .not selector that doesn't work
$(this).attr('disabled', 'disabled');
});
});
任何想法,爲什麼?
另外,爲什麼doen't這一行工作時,我與this
替代選擇:
var newSelectedSiblings = $('.social-option select').find("option[value=" + newSelected + "]");
這樣的:
var newSelectedSiblings = $(this).find("option[value=" + newSelected + "]");
因爲change
選擇是一樣的:$('.social-option select').on('change'...
http://jsfiddle.net/ilyaD/4BBcZ/5/
更新
我已經找到了解決方案的第一個問題: 代替
我用:
newSelectedSiblings.not('option:selected', this)
Thanx,我試圖在其他列表中禁用選中的選項,如果我在其中選擇'臉譜',我將無法在其他人中選擇它(添加一個jsfiddle) – ilyo 2012-07-12 08:50:48
此外,它爲什麼是用$(this)'替換'change function'中的'$('。social-option select')'不起作用?從你說的這是假設.. – ilyo 2012-07-12 08:53:06
@IlyaD我編輯我的答案與代碼。 – Ariel 2012-07-12 08:56:35