单击ajax加载的按钮时调用JavaScript函数

单击ajax加载的按钮时调用JavaScript函数,javascript,ajax,dom,Javascript,Ajax,Dom,我有一个html表单,它通过ajax加载其内容,并包含一些按钮,单击这些按钮时,应该执行html页面的脚本标记中定义的JavaScript函数。所以:按钮是通过ajax(works)加载的,但当单击按钮时,它不会触发所需的操作,也不会触发Firebug中的JavaScript错误。如何获得通过ajax加载的一组按钮的onclick信号,以绑定到已经存在的JavaScript函数 编辑:我还应该注意到我没有使用JQuery。如果这是唯一的方法,我愿意这样做,但如果不是这样,我更愿意只使用本机Jav

我有一个html表单,它通过ajax加载其内容,并包含一些按钮,单击这些按钮时,应该执行html页面的脚本标记中定义的JavaScript函数。所以:按钮是通过ajax(works)加载的,但当单击按钮时,它不会触发所需的操作,也不会触发Firebug中的JavaScript错误。如何获得通过ajax加载的一组按钮的onclick信号,以绑定到已经存在的JavaScript函数

编辑:我还应该注意到我没有使用JQuery。如果这是唯一的方法,我愿意这样做,但如果不是这样,我更愿意只使用本机JavaScript

EDIT2:我的问题有点复杂,但正如在所选答案中所述,在通过ajax发送数据之前,应该能够在php脚本中设置onclick事件处理程序。如果你有一个数据重响应,想要减少带宽,你可能会考虑做客户端的一切,但我发现在大多数情况下只需在PHP脚本中设置OnCutle属性就更容易了。< /P> < P>追加/插入HTML(检索到的Ajax响应)到DOM和绑定<代码>点击< /代码>事件到它:

function alreadyExistingFunc() { 
    alert('button is clicked!'); 
}

var ajax_data ="<button id='my-button'>My Button</button>";

$('body').append(ajax_data).find('#my-button').on('click', function(e){
    alreadyExistingFunc();
    // some more code...
});

您还可以使用回调:

function getAjaxContent(callback) {
    $.ajax({url: "url"}).done(function() {
      callback(data);
    });
}

getAjaxContent(function (data) {
    //ajax content has been loaded, add the click event here
}

动态生成的按钮可能绑定了一个内联事件。生成按钮时,只需确保它有一个
onclick=“alreadyExistingFunc();”
,页面就会愉快地执行它

或者,当AJAX数据完成写入文档时,找到新按钮并将事件绑定到它们:

function ajaxSuccess()
{
    document.getElementById('newButtonIdHere').onClick = function() {
        alreadyExistingFunc();
    }
}

这应该能奏效。还请注意,如果您曾经“需要”jQuery的一小部分来执行某些操作(如选择器或事件处理),您几乎总是可以

正确回答问题;我的问题比这稍微复杂一点,主要是因为我在javascript和php之间切换太多,以至于在构造post字符串时没有注意到我使用了错误的concat运算符。。。“动态生成的按钮可能绑定了一个内联事件。生成按钮时,只需确保它有一个onclick=“alreadyExistingFunc();”,页面就会愉快地执行它。“怎么了?在这种情况下是问题本身吗?我面临同样的问题,但这并不能解决问题。OP的情况是,在DOM中插入一个按钮而没有添加任何事件侦听器。如果出于某种原因,您无法使用JS添加事件侦听器(可能是由于CMS限制,不知道选择它的ID等原因),您可以始终依靠按钮来执行onClick=“”。
function ajaxSuccess()
{
    document.getElementById('newButtonIdHere').onClick = function() {
        alreadyExistingFunc();
    }
}