javascript - 无法使用 jQuery 长度找出现有元素

标签 javascript jquery wicket

我正在使用bootstrap multiselect根据文本框的搜索更新/显示一些用户,即根据我的应用程序要求,从文本中选择的结果将显示在多选中。取消选择某个选项将从多选和重建中删除该值。我正在使用 wicket 框架来显示此多选,如下所示 -

private PaletteListChoice<T> addSelectedEntities(...) {
    final PaletteListChoice<T> result = new PaletteListChoice<T>(id, model, choicesModel, renderer, this) {
        private static final long serialVersionUID = 1L;

        @Override
        public void renderHead(IHeaderResponse response)
        {
            String jsSelectedField = "var idSelector = '" + getMarkupId() + "';\n"
                    + "var idSelectorUL = jQuery('#' + idSelector +'UL');\n"
                    + "if(idSelectorUL.length) {\n" // if idSelectorUL present, don't create bootstrap-multiselect again
                    + "} else {\n" // if idSelectorUL not present, then create bootstrap-multiselect again
                    + "MultiSelect.setMultiSelect(idSelector, false);\n" // custom code to display bootstrap multiselect, similar to $('#id').multiselect();
                    + "}\n";

            response.renderOnDomReadyJavaScript(jsSelectedField);
        }
    };
    parent.add(result);
    return result;
}

现在,我的问题是,虽然 idSelectorUL(例如 selectddUL)存在,但我得到的 idSelectorUL.length 为“0”。一旦选项被删除,我就会重建多选,并且由于上述问题,我得到两个多选(长度返回 0 并且 wicket 创建多选选项)

我的代码或使用 jQuery 根据 id 识别 UL 存在的任何其他方法有任何问题吗?

最佳答案

您是否在组件上调用 setOutputMarkupId(true);

加载时该组件是否存在于页面上,或者该组件是否通过 ajax 添加?如果是这样,您应该将 JavaScript 从 renderHead 移动到附加到组件本身的行为中。

关于javascript - 无法使用 jQuery 长度找出现有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45578061/

相关文章:

javascript - Jquery Mobile (JQM) 1.4.5 Page Min-Height 将页面高度降低到小于 100%

java - Wicket Jetty 与快速启动中的 Start.java 集成停止工作

wicket - 仅对 Wicket 中的登录用户可用的可添加书签页面的方法

Wicket - 您可以为中继器内的元素指定标记 ID 吗?

javascript - 在html中显示javascript变量

javascript - lodash 选择 : set value if key not set

javascript - 在nodejs中将参数传递给回调函数的最佳方法

javascript - highcharts 范围选择器不显示绘图

javascript - 获取输入隐藏字段jquery中的输入范围 slider 值

javascript - 如何获取动态表行值