Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery.click()不处理使用AJAX添加的动态对象_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript jQuery.click()不处理使用AJAX添加的动态对象

Javascript jQuery.click()不处理使用AJAX添加的动态对象,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我有一个页面,上面显示一个按钮,上面有id=button链接。按钮后面还有一个div,id为display content。单击按钮后,我正在进行一个AJAX调用,该调用将调出一些内容并将其显示在第二个div中。下面是我正在使用的JavaScript代码: $('#button-link').click(function(event) { event.preventDefault(); $.ajax({ url: 'site/someAction',

我有一个页面,上面显示一个按钮,上面有
id=button链接
。按钮后面还有一个div,id为
display content
。单击按钮后,我正在进行一个AJAX调用,该调用将调出一些内容并将其显示在第二个div中。下面是我正在使用的JavaScript代码:

$('#button-link').click(function(event) {
    event.preventDefault();
    $.ajax({
        url: 'site/someAction',
        success: function(result) {
            $('#display-content').html(result);
        }
    });    
});

$('#secondButton').click(function(event) {
    event.preventDefault();
    $.ajax({
        url: 'site/anotherAction',
        success: function(result) {
            $('#display-content').html(result);
        }
    });    
});
这完全符合预期,我正在
#display content
div中加载一些文本和HTML元素。其中一个元素是另一个id为
#secondButton
的按钮。当用户单击第二个按钮时,我想对另一个地方进行另一个AJAX调用,并在
#display content
div中显示不同的内容。但是,这不起作用。jQuery脚本在页面上,它正在正确加载,并且在第一次AJAX调用后HTML元素也正确显示在页面上,但似乎
#secondButton
不是DOM的一部分,单击它时不会触发单击事件

知道哪里出了问题,以及如何为这个动态添加的按钮注册单击事件吗?

您需要使用

注意:如果可以多次添加元素
#secondButton
,则此操作无效。对于这种情况,您需要使用

对于jQuery1.7和+

$(document).on('click','#secondButton',function(event) {
    event.preventDefault();
    $.ajax({
        url: 'site/anotherAction',
        success: function(result) {
            $('#display-content').html(result);
        }
    });    
});
对于jQuery 1.7之前的版本

$(document).delegate('#secondButton', 'click',function(event) {
    event.preventDefault();
    $.ajax({
        url: 'site/anotherAction',
        success: function(result) {
            $('#display-content').html(result);
        }
    });    
});

是的,这是有效的,正如描述中所提到的,它也涵盖了将来添加的元素。谢谢大家!@mmvsbg注意:如果可以多次添加元素#secondButton,则此操作无效。在这种情况下,您需要使用类。因为id在页面中应该是唯一的。是的,我很清楚这一点,我将确保只有一个#secondButton id。干杯!