基于javascript创建元素的ajax

基于javascript创建元素的ajax,javascript,ajax,jquery,Javascript,Ajax,Jquery,javascript是否可能不应用于通过ajax请求创建的元素? 实际上,我有一个像父母和孩子这样的元素树,有一个更高层次的部门 我在索引页上有根元素,单击可以通过此请求检索子元素: var get_children = function() { pid = $(this).attr("id"); //var parentid = pid // store value in data variable var data = { par: pid }; $.getJSO

javascript是否可能不应用于通过ajax请求创建的元素? 实际上,我有一个像父母和孩子这样的元素树,有一个更高层次的部门

我在索引页上有根元素,单击可以通过此请求检索子元素:

var get_children = function() {
 pid = $(this).attr("id");
 //var parentid = pid
    // store value in data variable
    var data = { par: pid };
    $.getJSON("/holz/children/",data,
        function(data){
      //remove the box if it already exists
      $("#parid-" + pid ).remove();
            // Add the messages div to the container
            $("#container").append("<div class='box' id='parid-" + pid + "'></div>");
            //create the id set for the box
            boxid = "#parid-"+pid
            //insert the elements one after each other with the id set to the elements pk  
            $.each(data, function(i,item){
                $(boxid).append('<p><a '+'id="'+item.pk+'"'+' class="element" href="#">'+item.fields.title +' ( id = '+ item.pk+' )'+'</a>'+'</p>');
            });
        }
    );
  return false;
};
var get_children=function(){
pid=$(this.attr(“id”);
//var parentid=pid
//将值存储在数据变量中
var data={par:pid};
$.getJSON(“/holz/children/”,数据,
功能(数据){
//如果该框已存在,请将其移除
$(“#parid-”+pid).remove();
//将messages div添加到容器中
$(“#容器”)。附加(“”);
//创建框的id集
boxid=“#parid-”+pid
//将id设置为元素pk的元素依次插入
$。每个(数据、功能(i、项){
$(boxid).append(''+'

'); }); } ); 返回false; };
问题是我无法深入,因为请求没有应用于我从第一个请求中获得的元素。ajax请求调用django视图,该视图应该(在第一个元素的上)并返回一个json响应,我使用它创建一个包含子元素的框

我做错了什么


thx

不,JavaScript总是应用于DOM中的每个有效元素,无论它来自何处


我还不能真正理解您的代码,但是您的AJAX调用可能是在使用文档中已经存在的ID注入元素?当试图处理这些元素时,这会造成麻烦。

我不确定自己是否完全理解,但听起来您希望onclick eventhandler应用于具有特定css类
.element
的所有DomeElement。我说得对吗

如果是这样的话,就用语法吧。这将允许您现在和将来将事件绑定到与给定选择器匹配的所有dom元素

以您自己的一些代码为例:

$('div.box').live('click', function() {
    alert('you clicked me!');
});

$("#container").append("<div class='box' id='parid-" + 1 + "'></div>");
$('div.box').live('click',function()){
警惕(“你点击了我!”);
});
$(“#容器”)。附加(“”);

在上面的示例中,我们动态添加的
div
将绑定我们的click事件,因为我们使用jqueryapi插入它

每个元素都有一个由元素主键创建的id,因此不会有任何重复的id元素。js获取id值,并将其用于检索具有该父级的元素。我看了几次代码,我都找不到问题。。。该函数是在上的单击事件时启动的。您没有给新到达的子元素任何他们可以侦听的onclick事件,是吗?您需要重新应用您使用的任何函数以使链接可单击。目前,从AJAX调用中得到的只是没有任何附加操作的死链接(这是设计的)。。。但是在第一个页面加载时,将加载指向元素类的click事件$(document).ready(function(){$(“.element”)。单击(get_children);});我必须重新应用它吗?是的,这只适用于运行函数时存在的
.element
s。这不是所有.elements的一般规则。同意,动态添加的元素没有连接,因为连接代码已经运行,所以您必须使用live以确保添加的元素也连接。