Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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
jQuery无法删除父项?_Jquery_Jquery Ui - Fatal编程技术网

jQuery无法删除父项?

jQuery无法删除父项?,jquery,jquery-ui,Jquery,Jquery Ui,我在一个div中有一个元素,它是“可拖动的”jqueryui。我正试图删除整个div。我的元素看起来像 <div class="draggable"> <img ...> <div class="delete">CLICK TO DELETE</div> </div> // Delete Image functionality $('.delete').click(function() { $

我在一个div中有一个元素,它是“可拖动的”jqueryui。我正试图删除整个div。我的元素看起来像

<div class="draggable">
    <img ...>
    <div class="delete">CLICK TO DELETE</div>
</div>
// Delete Image functionality
    $('.delete').click(function() {

        $this.parent().draggable('disable');

        // Post the DELETE request
        $.get('delete/', { d: '1' , id:photo }, function(data) {
            if (data == "true") {
                $(this).parent().remove();
            } else {
                alert("An error has been encountered, please try again later");
            }
        });
    });

你知道怎么回事吗?

问题是,在
$.get
的回调中,
这个
被设置为
jqXHR
实例。例如,如果您愿意,您可以这样做,
this.responseText
。显然,它不再设置为元素

您需要为元素提供一个不被覆盖的别名:

$('.delete').click(function() {
    var clicked = this;
    $this.parent().draggable('disable');

    // Post the DELETE request
    $.get('delete/', {d:'1',id:photo}, function(data) {
        if(data == "true") {
            $(clicked).parent().remove();
        }else{
            alert("An error has been encountered, please try again later");
        }
    });
});
还有很多其他方法可以做到这一点:最有效的方法是
var parent=$(this).parent().draggable('disable')
(假设
draggable
是可链接的,很可能是)。另一个选项是通过事件的
currentTarget
属性:

$('.delete').click(function(event) {
    // ...
            $(e.currentTarget).parent().remove();
我认为我给出的版本可能最清楚地说明了为什么这不适用于您,这就是我选择它的原因。

内部函数中的“this”与外部函数中的“this”不同。尝试将“this”存储在另一个变量中,并在外部函数中使用该变量,即:

// Delete Image functionality
    $('.delete').click(function() {

        $this.parent().draggable('disable');
        var that = $(this);

        // Post the DELETE request
        $.get('delete/', {d:'1',id:photo}, function(data) {
            if(data == "true") {
                that.parent().remove();
            }else{
                alert("An error has been encountered, please try again later");
            }
        });
    });

您没有定义
$this
有什么原因吗?您可以直接在$中使用它。get@Steven哈哈,你说的是我现在想的;)太晚了,想都想不起来,也许问都晚了;)lonesomeday和我(dknaack)的答案基本相同,我认为这是我们都必须睡觉的信号。我希望能投赞成票。和一个接受lonesomeday的人