Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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
Jquery ajax调用后在DOM中查找元素_Jquery_Ajax_Function - Fatal编程技术网

Jquery ajax调用后在DOM中查找元素

Jquery ajax调用后在DOM中查找元素,jquery,ajax,function,Jquery,Ajax,Function,在动态构建的jQuery树中,我想运行一个函数来查找正确的元素。如果找到元素,我想运行单击事件 当通过Ajax调用单击树的父级时,树的子级得到构建。因此,by‘search’函数需要等待Ajax完成,然后查看DOM元素是否存在 我不能确切地告诉我的函数它需要等待哪个ajax调用,所以我想我告诉它通常要等待所有ajax调用 我的职能在哪里: if ($("#treeview10 tbody tr[data-id="+id+"] .node-name").length){ $("#tree

在动态构建的jQuery树中,我想运行一个函数来查找正确的元素。如果找到元素,我想运行单击事件

当通过Ajax调用单击树的父级时,树的子级得到构建。因此,by‘search’函数需要等待Ajax完成,然后查看DOM元素是否存在

我不能确切地告诉我的函数它需要等待哪个ajax调用,所以我想我告诉它通常要等待所有ajax调用

我的职能在哪里:

if ($("#treeview10 tbody tr[data-id="+id+"] .node-name").length){

    $("#treeview10 tbody tr[data-id="+id+"] .node-name").click();

}else{

    traverse_tree($("#treeview10 tbody tr[data-id="+id+"] .node-name"));
}


function traverse_tree(domelement){

    $("#treeview10 tbody tr .node-name").each(function(index, el) {

        $(el).click();

        $(document).ajaxStop(function () {
            console.log('loop');
            if (domelement.length){

                domelement.click();

                return false;
            }   
        });         
    });

    if (domelement.length){

        console.log('found'); 

    }else{

        $(document).ajaxStop(function () {

            console.log('NOT found');

            traverse_tree(domelement);

        });
    }
}
然而,这是行不通的。.each之后的click事件可以工作,但它似乎并不等待Ajax调用完成


有人能帮我吗?

如果您有权访问AJAX函数,您应该将
横向函数添加到处理特定DOM上的更改的AJAX的
完成
。
最好知道哪个AJAX函数正在处理特定DOM上的更改。您可以使用DEVTOOLS

第一次单击事件不会等待AJAX停止调用完成,因为它位于执行AJAX调用的块代码之外


如果找不到AJAX文件,

我们可以看到此调用将动态构建的html结构吗?-我认为有一种更简单的方法,您甚至不必在ajax调用本身中查找它,但我需要先查看生成的结构。这是可能的,但我不想在这里的论坛上链接它。可以私下链接到你吗?嗯,哈哈,你能在这个元素选择器中填入你想要找到的目标元素吗<代码>$(“#树视图10 t车身tr…”
?因为最后一部分一直在变化,所以这样做是可行的。但是,它总是有一个特定的类吗?有什么特别的吗?或者,在到达之前,您可以沿设置的dom树向下移动的最远距离是多少?
$.ajax({
  type: "POST",
  url: "ajaxposturl",
  data: "data to be submitted",
  domeelement: targettedDOMElement,
  success: function(data, textStatus) {
   
  } 

  complete: function(data) {
   // This is where you call your function.
  traverse_tree(domelement);

  } 
  error: function(MLHttpRequest, textStatus, errorThrown) {
        alert(errorThrown);
  }
});
function traverse_tree(domelement){
    var found = false;

    $("#treeview10 tbody tr .node-name").each(function(index, el) {
        
            if (domelement.length){
                found = true;
                domelement.click();
                console.log('found'); 
                
            }          
        });         
    });

    if (!found){
        
        console.log('Not found'); 
    
    }
}