我有一个表单,我使用 jQuery 隐藏/取消隐藏元素的元素,具体取决于另一个元素的选定值。
除 Safari 6.0 外,在所有浏览器(IE、Firefox、Chrome)中一切正常
这是我隐藏元素的函数,具体取决于它们的值
function hideOptionIfValue(optionElements) {
/* Loop through the possible values of value (using JS's arguments) */
for (var i = 1; i < arguments.length; i++) {
/* Reference arguments[i] as value for further use in .each() */
var value = arguments[i];
$(optionElements).each(function(){
if($(this).val() === value) {
$(this).addClass('hidden');
}
});
}
我根据情况,我这样称呼这个函数:
hideOptionIfValue(optionElementsConcerned, 'valueToHide5');
或者像这样:
hideOptionIfValue(optionElementsConcerned, 'valueToHide1', 'valueToHide2', 'valueToHide3');
设置后:
var optionElementsConcerned = $('#id1 option, #id2 option, #id3 option');
经过一些基本调试后,问题似乎来自与隐藏类相关的 css 规则的“非解释”(来自 html5 样板):
.hidden {
display: none !important;
visibility: hidden;
}
实际上,使用 Safari 中的 Inspector,所选选项确实分配了隐藏类,但它们确实出现在下拉菜单中。