如何使用jQuery生成ajax后执行其他操作?

时间:2010-01-28 14:49:51

标签: jquery ajax

我有this ajax function和jquery。 (http://pastie.org/798788

输出如下。

<div class="content">
    <h1>Latest Messages or Task To Do</h1>

    <ul style="display: block;" id="message_ul">
    <li class="86">
<div class="listbox"><span class="user">
<strong>Administrator</strong></span>
<span class="date">2010-01-28 08:57:43</span>
<a href="http://127.0.0.1/ci_backendpro2/index.php/messages/admin/changestatus/86"
class="todo">to do</a>
<span class="msg">Change links in message, to do, completed 
and delete to anchor </span>
</div>
   </li>

<li class="85">
<div class="listbox"><span class="user">
<strong>Administrator</strong></span>
<span class="date">2010-01-28 08:51:15</span>
<a href="http://127.0.0.1/ci_backendpro2/index.php/messages/admin/changestatus/85"
class="todo">to do</a>
<span class="msg"> meta tag keywords and 
description should show from page input/database </span>
</div>
</li>

<li class="84">
...
...

现在我正在尝试使用class =“todo”添加另一个ajax。但是,当我尝试这个测试。它没有警觉。它执行php函数。

$(".todo").click(function(){
    event.preventDefault();
    alert("hei");

}); 

我不确定为什么。是因为它是由ajax创建的吗?

它与绑定有关吗?我怎样才能使它发挥作用?

我正在使用CodeIgniter。

其他php functions are here(http://pastie.org/798802)

3 个答案:

答案 0 :(得分:2)

看起来您需要使用live - 样式事件绑定将事件对象命名为click处理程序的参数。

$(".todo").live('click', function(event) {
    event.preventDefault();
    ...
});

答案 1 :(得分:1)

您需要使用live事件:

$(".todo").live('click', function() { // <- Extend the "click" event to every .todo element created in the future
    event.preventDefault();
    alert("hei");
}); 

答案 2 :(得分:0)

不确定我完全理解一切是怎么回事。但是,如果在执行'bind'函数后插入带有'todo'类的链接,则需要: a)重新调用绑定函数(首先解除绑定)。 b)使用jquery live函数,以便自动附加到任何新的'todo'类。