我有一个表单,我使用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');
经过一些基本的调试后,看起来问题来自&#34;非解释&#34;与隐藏类相关的css规则(来自html5样板):
.hidden {
display: none !important;
visibility: hidden;
}
实际上,在Safari中使用Inspector时,所选选项会为其分配隐藏类,但它们会显示在下拉菜单中。