0

当我使用

$('body').html(data1)

或者

$('html').html(data1)

在 AJAX 中,则任何 HTML 标记或 jQuery 函数在加载的页面上都不起作用。

$.ajax({
    type:"GET",
    dataType: 'html',
    url: 'hell.php',
    success : function(data1) {
        alert(data1);// will alert "ok"
        $('body').html(data1);
    },
});
4

3 回答 3

1

您在 $('body').html(data1) 之前附加的事件不会仅仅因为之前在正文中的元素将不再存在而触发。

您必须重新附加事件或使用.on()方法并将事件直接附加到文档。

于 2013-09-26T13:30:15.130 回答
0

首先,定义要附加到函数中已加载元素的功能,例如:

function attachEventsAfterAjax(){

    $('.aLoadedElement').on('click', function(){
        console.log('Yay!');
        return false;
    });

}

然后,在您加载新内容后,调用该函数,例如:

$.ajax({
    [...],
    success: function(data){

        // Don't replace the <body> HTML, that's not a good idea
        // $('body').html(data);

        $('#container').html(data);
        
        // Now attach the functionality!
        attachEventsAfterAjax();

    }
});
于 2013-09-26T13:45:44.067 回答
0

jQuery live附加事件处理程序时更好地使用功能。见:http ://api.jquery.com/live/

于 2013-09-26T13:34:49.347 回答