Скрытие optgroups
и options
, вероятно, не лучший путь, даже если заключить в span
. Обтекание в <span style="disaply:none">
не работает, когда я тестировал его в Safari Mobile.
Ваш лучший вариант - убрать ненужные предметы из выпадающего списка. При этом вы захотите создать клон исходного выпадающего списка, чтобы была запись начального состояния.
$(document).ready(function() {
//Add a hidden clone
var clone = $("#fancy").clone(true);
clone.attr("id", "fancy_clone");
clone.css("display", "none");
$("body").append(clone);
$('.search').on('keyup', function() {
searchFilter($(this).val());
});
function searchFilter(value) {
//Need a working clone - keep our clone as the original record
var workingClone = $("#fancy_clone").clone(true);
$("#fancy").empty();
//Remove unwanted options
$(workingClone).find("option").each(function() {
if ($(this).val().toLowerCase().indexOf(value.toLowerCase()) === -1) {
var thisParent = $(this).parents("optgroup");
$(this).remove();
//remove optgroup if it is empty
if ($(thisParent).children("option").length === 0) {
$(thisParent).remove();
}
}
});
//UPdate the actual select
$("#fancy").append($(workingClone).html());
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<input type="text" class="search" />
<select id="fancy">
<optgroup label="test01">
<option value="car">car</option>
<option value="bike">bike</option>
<option value="cycle">cycle</option>
</optgroup>
<optgroup label="test02">
<option value="orange">orange</option>
<option value="apple">apple</option>
<option value="pinapple">pineapple</option>
</optgroup>
</select>
Вы можете «выполнить последовательность операторов, только последний из которых должен рассматриваться как возвращаемое значение», используя точка с запятой.
...
constant_int _ => ( print "returning integer"; (integer,theta) )
...
В этом случае нам нужно было обернуть последовательность операторов в скобки, потому что точка с запятой имеет меньший приоритет, чем выражение-регистр, и поэтому, если бы у нас не было скобок, было бы думать, что регистр выражение заканчивается точкой с запятой, и что все case-выражение является частью последовательности, что в данном случае не то, что вам нужно.