jQuery无法删除父项?
我在一个div中有一个元素,它是“可拖动的”jqueryui。我正试图删除整个div。我的元素看起来像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 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的人