2012-07-10 81 views
0

我是jquery中的新成员,并且遇到了一个有点奇怪的问题。 在jquery中创建一个div后,我无法使用它,这个例子会告诉你这个问题是怎么回事!我们假设在get.php页面中只有:echo“test test”; 在我的文件中的代码:无法使用jquery创建元素

<script type="text/javascript" src="jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() 
{ 
    $("#bda").click(function() 
{ 
$.post("get.php",function(data){ 
$("#tdiv").append('<div class="info" >'+data +'</div>'); 
});  
}); 

$(".info").click(function() 
{ 
    alert("done"); 
}); 
}); 
</script>  
</head> 

<body> 
<div id="bda">click here</div> 
<div align="center" style="border:1px solid blue" id="tdiv">  
    example 
</div> 
<div class="info" >it works here</div> 

有人能帮助我..

+0

究竟是什么问题,发生了什么?你试图解决什么问题? – 2012-07-10 09:40:45

+0

你能提醒(数据)..你能成功获取数据吗? “在jquery中创建一个div后,我无法使用它”,通过使用你的意思?你想做什么,而且没有完成? – Rajesh 2012-07-10 09:43:34

回答

2

jQuery不会与$(".info")在调用它的时候选择.info元素是什么 - 这是只有一个元素,因为另外一个是后来追加(通过AJAX)。因此,其他元素没有附加的点击事件。因此,.info选择器实际上并未保存 - 仅将元素从文档中拉出,然后丢弃选择器。

你想要什么,当你点击,jQuery检查元素与选择器。你可以通过事件代表团做到这一点:

// When you click somewhere in the body, jQuery will check whether you 
// clicked on a `.info` element and execute the function in that case. 
// This also works for elements added later on. 

$("body").on("click", ".info", function() { ... }); 
+0

我用你的解决方案,但它不工作: “对象不支持此属性或方法“ 另一个问题:使用$(”body“)真的是实际吗? 如果页面被收费? 谢谢 – 2012-07-10 10:14:05

+0

@nabilmenzel:如果您使用的是旧版本的jQuery,请试试'.delegate'。你应该把事件绑定到最接近的持久父对象上。在你的情况下,最亲密的父母是身体 - 你想将事件绑定到什么? – pimvdb 2012-07-10 10:17:22

+0

我使用jQuery的最新版本,我尝试使用.delegate但没有任何事情:S – 2012-07-10 10:22:29

0

你的点击事件信息类绑定在脚本的执行,但您在AJAX程序在以后添加新的div 。你必须点击事件重新分配给这个类

尽量不要用。点击(绑定),使用。对(),而不是像这里所说:http://api.jquery.com/on/

$("body").on('click', '.info', function() { 
    alert("done"); 
}); 
+0

它的工作原理谢谢:) – 2012-07-10 11:08:14

1

您插入新元素的DOM ,你应该委托事件:

$("body").on('click', '.info', function() { 
    alert("done"); 
}); 
+0

它的工作原理专有:) 我用的是旧版本, 感谢您 – 2012-07-10 10:54:13

+0

@nabilmenzel欢迎你:) – undefined 2012-07-10 10:55:15