特定查询选择器在Firefox中无效,但在Chrome和Edge中有效

42fyovps  于 2023-05-11  发布在  Go
关注(0)|答案(1)|浏览(102)

我有一个使用Kendo(使用.NET V4)生成的表单,其中包含一堆嵌套div的标签。
我试图动态地隐藏一些输入字段/标签取决于选择的下拉列表中的形式。
我现在正在一个函数中选择要隐藏的元素。这个函数看起来像这样:

function toggleItemDisplayForDepositChgType(e) {
    var elements = [
        { el: 'div.editor-label:has(label[for="includeInACH"])', show: false },
        { el: 'div.editor-field:has(#includeInACH)', show: false },
        //...
    ];

    var showArHoGLOverride = false;

    if (e && e.model) {
        showArHoGLOverride = e.model.chgTypeID == @((int)(EE.ChargeType.Deposit));
    } else {
        showArHoGLOverride = $('#chgTypeID').val() == @((int)(EE.ChargeType.Deposit));
    }

    $('#arGLOverride').data("kendoComboBox").enable(showArHoGLOverride);
    $('#hoCreditGLOverride').data("kendoComboBox").enable(showArHoGLOverride);

    elements.forEach(function (item) {
        var el = document.querySelector(item.el);

        if (showArHoGLOverride === item.show) {
            el.style.display = "inline";
        } else {
            el.style.display = "none";
        }
    });
}

选择器在Chrome、Edge和Safari中似乎可以正确读取,但在Firefox中,我得到以下错误:
Document.querySelector:“div.editor-label:has(label[for=“includeInACH”])”不是有效的选择器

uz75evzq

uz75evzq1#

已结束更新查询选择器以使用jQuery:

var el = document.querySelector(item.el);

var $el = $(item.el);

相关问题