Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在DOM中搜索元素_Javascript_Jquery_Dom_Vaadin7 - Fatal编程技术网

Javascript 在DOM中搜索元素

Javascript 在DOM中搜索元素,javascript,jquery,dom,vaadin7,Javascript,Jquery,Dom,Vaadin7,我需要将ChosenJS jq插件包装到Vaadin组件中。我想它会在初始化时进行一些jq查询 因此,我的元素应该在调用$().selected()时附加到DOM Vaadin组件是动态绑定的:当您进行一些动态标记时,您只有一个分离的小部件可以提供一个元素,并且这些元素随后被嵌套到DOM中。因此,我尝试使用GWT定时器进行延迟函数调用(我认为它在内部使用了setTimeout或setInterval),认为当小部件元素出现在DOM中时,它会工作 这是一段代码。但它确实不起作用 代码段中有两个测试

我需要将ChosenJS jq插件包装到Vaadin组件中。我想它会在初始化时进行一些jq查询

因此,我的
元素应该在调用
$().selected()
时附加到DOM

Vaadin组件是动态绑定的:当您进行一些动态标记时,您只有一个分离的小部件可以提供一个元素,并且这些元素随后被嵌套到DOM中。因此,我尝试使用GWT定时器进行延迟函数调用(我认为它在内部使用了
setTimeout
setInterval
),认为当小部件元素出现在DOM中时,它会工作

这是一段代码。但它确实不起作用

代码段中有两个测试

第15-19行显示小部件仍处于分离状态

第34行当元素应该在DOM中时,在30秒内启动测试。我真的可以在浏览器调试器中看到它。30秒足以确保您可以在窗体和调试器中看到它

第24-28行确保未分离
元素。它打印从
的所有元素

第29行也可以

这是一个gwt方法,它通过ID查找元素

第38-43行找不到我的元素

第42行-空jq包装

第42行-空

请帮助我理解为什么我找不到我的select


您应该将理解问题所需的任何代码直接包含到您的问题中,而不是仅通过外部引用(根据StackOverflow规则)提供。与您的问题无关,但您应该尝试使用
console.log(“==”)
来阻止日志条目而不是第一个
控制台。log(“==”
控制台.groupEnd()
作为第二个。发现我的widgetset正在
中加载。widgetset提取这些库:jq和Selected。所以它们在同一个iframe中。不知道这是否重要。您应该将理解问题所需的任何代码直接包含到您的问题中,而不是仅通过外部引用(根据StackOverflow规则)提供。与您的问题无关,而是不要执行
console.log(“==”)
要阻止日志条目,您应该尝试使用
console.group();
而不是第一个
控制台。日志(“==”
控制台.groupEnd()
作为第二个控制台。发现我的widgetset正在
中加载。widgetset拉取这些库:jq和selected。因此它们在同一个iframe中。不知道这是否重要。
public ChosenImpl(VChosenUI target, final ChosenServerRpc rpc) {
    StyleInjector.injectStylesheet(ChoosenStaticApi.INSTANCE.chosen_css().getText());
    ScriptInjector.fromString(ChoosenStaticApi.INSTANCE.jquery_min_js().getText()).inject();
    ScriptInjector.fromString(ChoosenStaticApi.INSTANCE.chosen_jquery_js().getText()).inject();
    this.rpc = rpc;
    select = DOM.createSelect();
    select.setAttribute("id", "artix-chosen-id-" + select.hashCode());
    select.setAttribute("multiple", "");
    select.setAttribute("data-placeholder", placeholder);
    //select.setAttribute("style", "");
    this.target = target;
    target.addStyleName("artix-chosen-target");
    target.getElement().appendChild(select);

    Element pp = select;
    while (pp != null) {
        logg(pp);
        pp = pp.getParentElement();
    }
    Timer timer = new Timer() {

        @Override
        public void run() {
            Element pp = select;
            while (pp != null) {
                logg(pp);
                pp = pp.getParentElement();
            }
            logg(DOM.getElementById("artix-chosen-id-" + select.hashCode()));
            findSelectInDOM("artix-chosen-id-" + select.hashCode());
        }

    };
    timer.schedule(30000);
}

public static native void findSelectInDOM(String jqselector) /*-{
 console.log("===============================================================");
 console.log(jqselector);
 console.log(document.getElementsByTagName("select"));
 console.log($("#"+jqselector));
 console.log(document.getElementById(jqselector));
 console.log("===============================================================");
 }-*/;