我正在使用jquery和php设计网页。我的页面有侧面菜单,然后单击其中一个选项,它向服务器发送请求以从文件中读取一些信息,它将创建一个表单,提交和其他按钮编辑(如果有人想要更改信息)那个表格)并将此html发送回客户端。我能够成功地做到这一点。但是当我点击编辑按钮时,它实际上没有调用我为所有按钮注册的点击处理程序。
$('button').click(function(){
alert("click event");
});
我把它包含在
中jQuery(document).ready(function() {
但是因为ready()中的所有jquery / js代码都在页面加载时执行,所以它无法在表单中找到这些按钮,因为它在加载后从服务器获取并将其替换为现有的“ div'因此无法调用事件处理程序。如果我为此表单的父div定义单击处理程序,如果我单击“编辑”按钮,它会收到单击事件,因为在加载初始页面时存在'div'。我可能没有正确地执行它,可能从服务器获取整个表单不是一个好主意,如果你必须在客户端的表单上做一些操作。但它可行吗?如果是,那么可能的出路是什么?谢谢!
答案 0 :(得分:3)
如果我理解正确,您可以将动态按钮添加到表单中。您应该尝试使用jQuery.on()
insteed,请参阅http://api.jquery.com/on/
在你的例子中,这可能适合你
$("body").on("button","click", function(event){
alert("Hello world");
});
答案 1 :(得分:3)
您的事件未触发,因为您在页面上存在的元素之前定义它。使用.on()方法应该解决这个问题。有点像:
$('body').on('click','button', function(){
alert("click event");
});
应该有用。
答案 2 :(得分:2)
使用on(jQuery 1.7及更高版本)。之前是delegate(1.4.2 +),之前是live ...
$('*your_form*').on('click', 'button', function(){
alert("click event");
});
答案 3 :(得分:1)
您可能只需要使用此代码:
$(document).on('click','button',function(){
alert("click event");
});
(jQuery 1.7或更高版本)
答案 4 :(得分:0)
你必须使用按钮ID
来打电话$('#buttonid').click(function(){
alert("click event");
});
或按钮类
$('.buttonclassname').click(function(){
alert("click event");
});