jQuery html()不会覆盖当前的html

时间:2013-12-02 16:37:23

标签: jquery html

好的,这是我的jQuery:

$.ajax({
    type: "POST",
    url: $(this).attr('href')
}).done(function( msg ) {
    $(this).parent().closest('p').html('Image Removed');
});

这是我的HTML:

<div id="gallery">
    <? foreach($galleryImages as $image) { ?>
        <div id="<?php echo $image['id'] ?>" class="box">
            <img src="<?php echo $fileHandler->get_thumb(__LISTING_GALLERY__.$image['image']) ?>" alt="Gallery Image" class="gallery-image" /><br />
            <p class="text-right"><a href="<?php echo __BASE_URL__.'/installers/dash/delete_gallery.php?id='.$image['id'] ?>" class="confirmation"><i class="fa fa-times"></i> Delete</a></p>
        </div>
    <? } ?>
</div>

自数据库更改以来,ajax工作正常。 但是,完成功能无法正常工作。

我提醒了$(this).parent().closest('p').html(),它会提醒当前的div有html。但是,它不会被&#39;图像删除&#39;覆盖它。我正在输入。

2 个答案:

答案 0 :(得分:7)

在done函数中的

this不是元素,因为有一个新的函数范围

var elem = this;

$.ajax({
    type: "POST",
    url: $(this).attr('href')
}).done(function( msg ) { // new function scope, "this" is now the XHR function
    $(elem).parent().closest('p').html('Image Removed');
});

答案 1 :(得分:1)

使用ajax上下文选项:

$.ajax({
    type: "POST",
    url: $(this).attr('href'),
    context:this
}).done(function( msg ) {
    $(this).parent().closest('p').html('Image Removed');
});