javascript - jQuery parents() 选择器失败
问题描述
我有一个锚点,并且我已经为其附加了一个 onClick 回调,因此一旦单击它,就会触发一个 AJAX 请求,该请求调用一个从数据库中删除图像的视图。它也应该完全删除<div class="image-preview">
,但是由于某种原因没有发生。
当我在JSFiddle测试 div 删除代码时,它可以工作。图像已成功从数据库中删除,并且 delete_view 参与了该过程。我也尝试console.log
从成功回调内部,我可以看到一条调试消息。console.log($(this).parents('.image-preview'));
return Object { length: 0, prevObject: Object(1) }
,因此我认为选择器失败了。
可能是什么原因?
HTML:
<div id="information">
<div class="image-previews">
<div class="image-preview">
<img src="/media/tmp/None/IMG_20190507_144128.jpg" width="80" height="54">
<p><a id="115" class="delete-temp-image-link">delete</a></p>
<label><input type="radio" name="main" value="IMG_20190507_144128.jpg">main</label>
</div>
</div>
<div id="div0">
<div>Name: IMG_20190507_144128.jpg</div>
<div>Size: 3.03MB</div>
<div>Type: image/jpeg</div>
<div class="progressNumber">100%</div>
</div>
</div>
jQuery:
var $deleteClicked = function(event) {
var url = Urls.deleteTempImage(event.target.id);
$.ajax({
url: url,
data: {
'id': event.target.id
},
success: function (data) {
console.log('spam');
$(this).parents('.image-preview').remove();
}
});
}
$(document).on('click', '.delete-temp-image-link', $deleteClicked);
看法:
def delete_view(request, id):
img = get_object_or_404(TemporaryImage, id=id)
img.delete()
return HttpResponse('successfull')
解决方案
您必须在运行$.ajax之前存储$(this)因为您在错误的上下文中使用它。
var $deleteClicked = function(event) {
var url = Urls.deleteTempImage(event.target.id);
var storedThis = $(this);
$.ajax({
url: url,
data: {
'id': event.target.id
},
success: function (data) {
console.log('spam');
storedThis.parents('.image-preview').remove();
}
});
}
$(document).on('click', '.delete-temp-image-link', $deleteClicked);
这应该按预期工作。
推荐阅读
- android - 在OpenGL中将蒙版应用于视频
- c# - VB.net 排序列然后排序但保留行位置
- javascript - 无法通过 jQuery 选择器读取来自 HTML 的表 td
- java - JavaFX Dialog getResult() 方法未返回正确的泛型类型
- angularjs - 动态添加所需属性到angularjs中的输入字段
- php - 搜索过滤器 laravel 问题,从获取值
- mysql - 从在线服务器恢复截断的表
- vue.js - 验证为真后如何在vue js中隐藏错误消息?
- ruby-on-rails - rails-ujs 永久禁用链接
- ios - siri 快捷按钮 (INUIAddVoiceShortcutButton) 在有多个快捷方式 (NSUserActivity) 时显示错误的标题