2

我有一个表单,我使用 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,所选选项确实分配了隐藏类,但它们确实出现在下拉菜单中。

4

0 回答 0