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');
});
答
改变它的使用方法:
$("#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/
谢谢,它的工作! – Anton 2011-05-23 13:39:25