【发布时间】:2012-07-11 23:09:17
【问题描述】:
我有几个选择列表,它们都具有相同的内容。我想要的是当一个选项被选中时,它将在其他选项中被禁用。
<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');
});
});
有什么想法吗?
另外,当我用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(this)
我用过:
newSelectedSiblings.not('option:selected', this)
【问题讨论】:
标签: jquery jquery-selectors this