按钮类型输入上的单击事件不起作用

时间:2012-03-19 19:33:43

标签: php javascript jquery html

我正在使用jquery和php设计网页。我的页面有侧面菜单,然后单击其中一个选项,它向服务器发送请求以从文件中读取一些信息,它将创建一个表单,提交和其他按钮编辑(如果有人想要更改信息)那个表格)并将此html发送回客户端。我能够成功地做到这一点。但是当我点击编辑按钮时,它实际上没有调用我为所有按钮注册的点击处理程序。

$('button').click(function(){
  alert("click event");
 });

我把它包含在

jQuery(document).ready(function() {

但是因为ready()中的所有jquery / js代码都在页面加载时执行,所以它无法在表单中找到这些按钮,因为它在加载后从服务器获取并将其替换为现有的“ div'因此无法调用事件处理程序。如果我为此表单的父div定义单击处理程序,如果我单击“编辑”按钮,它会收到单击事件,因为在加载初始页面时存在'div'。我可能没有正确地执行它,可能从服务器获取整个表单不是一个好主意,如果你必须在客户端的表单上做一些操作。但它可行吗?如果是,那么可能的出路是什么?谢谢!

5 个答案:

答案 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");
     });