首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载ajax xml后,jQuery切换不起作用

加载ajax xml后,jQuery切换不起作用
EN

Stack Overflow用户
提问于 2016-05-21 01:44:05
回答 2查看 132关注 0票数 0

我似乎不明白为什么在加载ajax xml之后切换不起作用。它可以正确地提取xml。但是,无法执行切换。

下面是jQuery onclick,其中包含了xml加载和切换

代码语言:javascript
复制
      $("document").ready(function(){

           $("#demo").on("click", loadxml);
           $("#demo-2").click(function(){
              $("li").toggle("fast");        
          });
        });

loadxml函数:

代码语言:javascript
复制
    function loadxml(){
     var xhttp = new XMLHttpRequest();
     xhttp.onreadystatechange = function(){
         if (xhttp.readyState == 4 && xhttp.status == 200) {
             myFunction (xhttp);
          }
    };
    xhttp.open("GET","xml/categories.xml", true);
    xhttp.send();
}

 function myFunction(xml){
      var i;
      var xmlDoc = xml.responseXML;
      var list = '<ul id="demo-2" class="list-unstyled no-bullet"><span class="glyphicon glyphicon-folder-open" aria-hidden="true"></span> Categories';
     var x = xmlDoc.getElementsByTagName("Categories");

  for(i=0; i<x.length; i++) {
        list += '<li><span class="glyphicon glyphicon-minus" aria-hidden="true"></span>' +  x[i].getElementsByTagName("CategoryName")[0].childNodes[0].nodeValue + "</li>";
}

list += "</ul>"

document.getElementById("change").innerHTML = list;

}

下面是html:

代码语言:javascript
复制
        <div class="container" id="change">
             <ul id="demo"></ul>
         </div>
EN

回答 2

Stack Overflow用户

发布于 2016-05-21 02:03:25

这段代码:

代码语言:javascript
复制
$("#demo-2").click(function(){
   $("li").toggle("fast");        
});

应该是:

代码语言:javascript
复制
$("#change").on('click','#demo-2',function(){
   $("li").toggle("fast");        
});

这是因为您在#change选择器上添加了动态内容。

票数 1
EN

Stack Overflow用户

发布于 2016-05-21 02:04:00

我很确定它不能工作,因为你绑定了click事件。

如果您在触发文档就绪事件之后发送xmlhttp请求,那么您已经将click事件绑定到'#demo-2',而‘#demo-2’还没有。我非常确定您需要将绑定推迟到将元素插入到dom中之后。

没问题。如果Hackerman的解决方案有效,它比我想的更优雅,而且老实说,是正确的。但是,如果不是这样:我在想,您应该等到绑定之后

代码语言:javascript
复制
document.getElementById("change").innerHTML = list;

这样内容就被加载到dom中,然后click事件就被绑定了。

代码语言:javascript
复制
// Just for simplicity, I'm pretending your xml is returned from the function
var xml = loadxml();
myFunction(xml);
// Now, bind your click event to the new element
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37352809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档