gpt4 book ai didi

javascript - AJAX 调用后未触发语义 UI 复选框事件

转载 作者:行者123 更新时间:2023-12-01 05:28:33 25 4
gpt4 key购买 nike

我正在使用 Semantic UI 2.1,但遇到了问题。我的页面中有三个 slider 复选框。它们都有相同的类,我可以一次初始化它们。它们每个都包含一个 data-* 属性,我需要使用 AJAX 调用将其发送到服务器。

问题是这样的:

第一次 AJAX 调用完成后,复选框的事件不再起作用。我知道事件绑定(bind)到 DOM,并且随着 DOM 的更改,它们不会更新,但是有什么办法解决它吗?

这是我的页面的一个非常简单的版本:

<html>
<body id="body">
<!-- First Element -->
<div class="ui fitted slider checkbox comment">
<input data-status="0" type="checkbox"> <label></label>
</div>
<!-- Second Element -->
<div class="ui fitted slider checkbox comment">
<input data-status="2" type="checkbox"> <label></label>
</div>
<!-- Third Element -->
<div class="ui fitted slider checkbox comment">
<input data-status="3" type="checkbox"> <label></label>
</div>

<button class="button-action">Do Stuff</button>

</body>
<script>
$('.checkbox.comment').checkbox().checkbox({
onChecked: function () {
// This is only called before ajax reload, after ajax, it just won't
console.log("onChecked called");
},
onUnchecked: function () {
// This too is only called before ajax reload
console.log("onUnchecked called");
}
});

$(document).delegate('.button-action', 'click', function () {

$.ajax({
// Noraml ajax parameters
})
.done(function (data) {
if (data.success) {
// Reload
$('#body').load(document.URL + ' #body');
}
});
});
</script>
<html>

最佳答案

您可以尝试将复选框事件监听器放入函数中,并在每次重新加载页面或在文档 DOM 中进行更改时调用该函数。我在下面附上了示例代码以供引用。

function Checkbox_eventlistener(){
$('.checkbox.comment').checkbox().checkbox({
onChecked: function () {
// This is only called before ajax reload, after ajax, it just won't
console.log("onChecked called");
},
onUnchecked: function () {
// This too is only called before ajax reload
console.log("onUnchecked called");
}
});
}

$(document).delegate('.button-action', 'click', function () {

$.ajax({
// Noraml ajax parameters
})
.done(function (data) {
if (data.success) {
// Reload
$('#body').load(document.URL + ' #body');
Checkbox_eventlistener();
}
});
});

$(function(){
Checkbox_eventlistener();
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/1.11.8/semantic.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/1.11.8/semantic.min.js"></script>
<!-- First Element -->
<div class="ui fitted slider checkbox comment">
<input data-status="0" type="checkbox"> <label></label>
</div>
<!-- Second Element -->
<div class="ui fitted slider checkbox comment">
<input data-status="2" type="checkbox"> <label></label>
</div>
<!-- Third Element -->
<div class="ui fitted slider checkbox comment">
<input data-status="3" type="checkbox"> <label></label>
</div>

<button class="button-action">Do Stuff</button>

关于javascript - AJAX 调用后未触发语义 UI 复选框事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38678531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com