jQuery - 来自ajax的按钮

问题描述:

来自俄罗斯的我很抱歉,因为糟糕的英语。 我正在用ajax加载网页的一部分。jQuery - 来自ajax的按钮

例如

<script type="text/javascript"> 
$("#link1").click(function(){ 
    $.post("ajax.php", { act: "load" }, 
    function(data) { 
     $("#content").html(data); 
    }); 
}); 
</script> 

<a href="#" id="link1">Click</a> 
<div id="content"></div> 

Ajax.php返回:<input type="button" id="button1" value="test">

现在我想控制从脚本这个按钮了。 我很努力:

<script type="text/javascript"> 
    $("#link1").click(function(){ 
     $.post("ajax.php", { act: "load" }, 
     function(data) { 
      $("#content").html(data); 
     }); 
    }); 

    $("#button1").click(function(){ 
     alert('test'); 
    }); 
</script> 

但这并不奏效。你可以帮我吗?谢谢。

$("#button1").click(...); 

不会做任何事情。

无论是把它放在你的Ajax请求的回调:

$.post("ajax.php", { act: "load" }, function(data) { 
    $("#content").html(data); 
    $("#button1").click(function(){ 
     alert('test'); 
    }); 
}); 

或使用.delegate()/.live()

$("#content").delegate('#button1', 'click', function(){ 
    alert('test'); 
}); 
+0

谢谢,它的工作! – Anton 2011-05-23 13:39:25

改变它的使用方法:

$("#button1").live('click', function(){ 
    alert('test'); 
}); 

live功能允许将事件从动态添加到页面的元素被解雇。因为元素#button1当您运行的代码($("#button1")不会选择任何元素)不存在尚未

您正在注册的单击事件是目前上的任何按键页。当您的链接被点击时,其链接已被注册。

如由Richard D.这组事件为永远你正在使用作为您选择的ID匹配任何按钮提到使用的现场直播。

这一部分:

$("#button1").click(function(){ 
    alert('test'); 
}); 

是否附着单击处理与标识button1任何现有的DOM元素时,脚本是第一次运行。由于该按钮在您手动点击您的link1元素之前不存在,您需要更改添加事件处理程序的方式。尝试使用jQuery的从该live方法来做到这一点:

<script type="text/javascript"> 
    $("#link1").click(function(){ 
     $.post("ajax.php", { act: "load" }, 
     function(data) { 
      $("#content").html(data); 
     }); 
    }); 

    $("#button1").live('click', function(){ 
     alert('test'); 
    }); 
</script> 

这将尽快为他们在文件中变成“活”的事件处理程序连接到任何匹配的元素。更多这里:http://api.jquery.com/live/