0

我正在使用一些 ajax 来调用一个 php 文件,该文件返回一些 html(一个图像和几个按钮),然后将其内容放入一个 div 中。问题是我希望能够使用从 php 返回的按钮之一的 id 来连接事件处理程序。如果我在浏览器中查看源代码,则源代码的输出仅显示 html 注入的 div 而不是 html:

<div class="displaysomething"></div>

我的 AJAX 如下:

$(document).ready(function () { 
   getServiceDisplay();
   $('#stop-service').click(function(e)
   {
       e.preventDefault();
       runHDIMService();
   });

}

function getServiceDisplay(){
$.ajax(
{ 
    url: 'includes/dosomething.php',
    type: 'POST',
    success: function(strOutput) 
    {
        $(".displaysomething").html(strOutput);
        }               
    }); 
};

PHP - 最终返回一个按钮。这就是我需要根据它的 id 连接到事件处理程序的内容。

echo '<input id="stop-service" type="button" value="Run" class="'.$strRunActionButtonClass.'"/>';

如果我只是在页面上放置一个按钮而不使用 AJAX 将其注入到 div 中,那么我的按钮连接代码效果很好。

有人有什么想法吗?

谢谢

4

2 回答 2

1

在 jQuery 中,.click(...添加事件处理程序的方法只会将事件添加到现有元素。不包括后来添加的新元素。

您可以使用jQuery on事件绑定方法来包含稍后添加的元素。

$("body").on("click", "#stop-service", function(e){
    e.preventDefault();
    runHDIMService();
});

在 JSFiddle 创建了一个简单的示例

于 2013-04-10T14:43:08.570 回答
0

问题是

$(document).ready(function () { 
   getServiceDisplay();
   $('#stop-service').click(function(e) // this doesn't exists yet
   {
       e.preventDefault();
       runHDIMService();
   });

这应该有效:

函数 getServiceDisplay(){

$.ajax(
{ 
    url: 'includes/dosomething.php',
    type: 'POST',
    success: function(strOutput) 
    {
        $(".displaysomething").html(strOutput);
        // so after you attached the div from ajax call just register your event
        $('#stop-service').click(function(e)
        {
            e.preventDefault();
            runHDIMService();
        });               
    }); 
};
于 2013-04-10T14:45:14.623 回答