有可能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;
};
问题是我无法深入,因为请求最适用于我从第一个请求获得的元素。 ajax请求调用一个django视图,该视图应该(并且它在第一个元素上执行)并返回一个json响应,我用它来创建一个包含子项的框。
我做错了什么?
THX
答案 0 :(得分:1)
我不确定我是否完全理解,但听起来你想要一个onclick事件处理程序应用于具有某个css类.element
的所有内部元素。我是对的吗?
如果是,则只需use jQuery's live() event binder语法。这将允许您将事件绑定到现在和将来与给定选择器匹配的所有dom元素。
使用您自己的一些代码作为示例:
$('div.box').live('click', function() {
alert('you clicked me!');
});
$("#container").append("<div class='box' id='parid-" + 1 + "'></div>");
在上面的示例中,我们动态添加的div
将我们的click事件绑定到它,因为我们使用jquery api来插入它。
答案 1 :(得分:0)
不,JavaScript总是适用于DOM中的每个有效元素,无论它来自何处。
我的代码还没有多大意义,但是你的AJAX调用可能是注入了文档中已经存在的ID的元素吗? 那个在尝试解决这些元素时会造成麻烦。