javascript - 删除嵌套元素时jQuery更新祖先内容
问题描述
我正在使用 jQuery 3.6
我正在从我的页面的一部分中删除一个嵌套元素,并且我希望页面的该部分自动更新,以反映更改 - 我希望浏览器自动更新修改后的部分,但它不会并且更改仅在我刷新页面时可见。
这是 HTML 的一个片段:
<div id="foo" class="row text-center text-lg-left">
<div class="col-lg-3 col-md-4 col-6">
<a id="abc-1"><img src="image1"></a>
</div>
<div class="col-lg-3 col-md-4 col-6">
<a id="abc-2"><img src="image2"></a>
</div>
<!-- etc -->
</div>
这是我的 Javascript 代码段:
$.ajax({
type: 'post',
url: "/path/to/post/to",
data: {'identifier': $(this).attr('id'), 'status':1, 'csrfmiddlewaretoken': '1234567abc'},,
success: function(data) {
/* assume we have variable named 'identifier' ... */
$(`a#${identifier}`).parent().remove();
/* next two lines is a brute-force attempt to
force the element to update - but it still
doesn't update, until I refresh the page!
*/
let remaining_content = $('div#foo').html()
$('div#foo').html(remaining_content);
},
error: function(xhr, status, error) {
var err = JSON.parse(xhr.responseText);
alert(status);
alert(error);
alert(err.Message);
}
});
当它的内容发生变化(在这种情况下删除元素)时,如何让带有 id 的 divfoo
进行更新(最好是一些漂亮的颜色淡入/淡出) - 而无需刷新浏览器来观察变化?
解决方案
您可以访问被点击的元素$(this)
- 您也可以使用 css 显示更新并应用一个changed
类
$('[data-rel=remove]').click(function() {
/*$.ajax({
type: 'post',
url: "/path/to/post/to",
data: {
'identifier': $(this).attr('id'),
'status': 1,
'csrfmiddlewaretoken': '1234567abc'
},
success: function(data) {
// assume we have variable named 'identifier' ...
*/
$(this).parent().remove();
onChanged('div#foo');
/*
},
error: function(xhr, status, error) {
var err = JSON.parse(xhr.responseText);
alert(status);
alert(error);
alert(err.Message);
}
});
*/
})
const onChanged = (el) => {
$(el).addClass('changed')
setTimeout(() => $(el).removeClass('changed'), 500)
}
div {
padding: 15px;
transition: background-color .5s, border .5s;
border: 1px solid transparent;
}
div.changed {
background-color: #FEFFAA;
border: 1px dashed yellow;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="foo" class="row text-center text-lg-left">
<div class="col-lg-3 col-md-4 col-6">
<a data-rel='remove' id="abc-1">Click to remove </a>
</div>
<div class="col-lg-3 col-md-4 col-6">
<a data-rel='remove' id="abc-2">Click to remove</a>
</div>
<!-- etc -->
</div>
推荐阅读
- python - 了解 Keras 历史对象
- javascript - 如何在 Vue 项目中使用 npm 设置 firebase v6.3.4?
- python - Python & Pandas:如何优雅地过滤许多数据帧?
- sonos - Sonos 10.3 版 API 的 API 更新
- javascript - 包含多个数组的对象上的映射函数
- reactjs - 从 eventListener 中调用函数
- php - 在 WooCommerce 中禁用特定运输方式的“下订单”按钮
- reactjs - 异步等待和获取总是返回错误
- blockchain - 如何在 Node.js 上使用solidity @0.5.0 部署工厂合约
- algorithm - 为什么我在下面的问题中只迭代到 sqrt(N)?