0

我是 jquery 的新手,我遇到了一个有点奇怪的问题。在 jquery 中创建一个 div 后,我不能使用它,这个例子将告诉你问题是怎么回事!假设在 get.php 页面中只有:echo "test test"; 我文件中的代码:

<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>

有人能帮我吗..

4

3 回答 3

2

jQuery 所做的$(".info")是在您调用它时选择.info元素——这只是一个元素,因为另一个元素是稍后附加的(通过 ajax)。因此,该其他元素没有附加点击事件。因此,.info选择器实际上并没有被保存——只是元素被从文档中拉出,然后选择器被丢弃。

您想要的是,当您单击jQuery 时,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() { ... });
于 2012-07-10T09:43:41.617 回答
1

当您向 DOM 插入新元素时,您应该委托事件:

$("body").on('click', '.info', function() {
  alert("done");
});
于 2012-07-10T09:42:58.213 回答
0

您在脚本执行时将 click 事件绑定到 info 类,但稍后在 ajax 过程中添加新的 div。您必须将点击事件重新分配给此类

尝试不绑定 .click(),改用 .on(),就像这里提到的:http: //api.jquery.com/on/

$("body").on('click', '.info', function() {
  alert("done");
});
于 2012-07-10T09:41:04.667 回答