Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
Javascript AJAX调用后未触发语义UI复选框事件_Javascript_Jquery_Ajax_Javascript Events_Semantic Ui - Fatal编程技术网

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

Javascript AJAX调用后未触发语义UI复选框事件,javascript,jquery,ajax,javascript-events,semantic-ui,Javascript,Jquery,Ajax,Javascript Events,Semantic Ui,我使用的是语义用户界面2.1,我遇到了一个问题。我的页面中有三个滑块复选框。它们都有相同的类,我可以一次初始化它们。它们都包含一个data-*属性,我需要通过AJAX调用将该属性发送到服务器 问题是: 在第一次完成AJAX调用后,复选框的事件不再起作用。我知道这些事件是绑定到DOM的,并且随着DOM的更改,它们不会更新,但是有什么办法吗 以下是我的页面的一个非常简单的版本: <html> <body id="body"> <!-- First Element --&

我使用的是语义用户界面2.1,我遇到了一个问题。我的页面中有三个滑块复选框。它们都有相同的类,我可以一次初始化它们。它们都包含一个
data-*
属性,我需要通过AJAX调用将该属性发送到服务器

问题是:

在第一次完成AJAX调用后,复选框的事件不再起作用。我知道这些事件是绑定到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>

做事
$('.checkbox.comment').checkbox().checkbox({
一旦检查:函数(){
//这只在ajax重新加载之前调用,在ajax之后,它就不会调用了
log(“onChecked调用”);
},
未检查:函数(){
//这也仅在ajax重新加载之前调用
console.log(“未检查调用”);
}
});
$(文档).delegate(“.按钮操作”,“单击”,函数(){
$.ajax({
//Noraml ajax参数
})
.完成(功能(数据){
if(data.success){
//重新装载
$(“#body').load(document.URL+”#body');
}
});
});

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

函数复选框\u eventlistener(){
$('.checkbox.comment').checkbox().checkbox({
一旦检查:函数(){
//这只在ajax重新加载之前调用,在ajax之后,它就不会调用了
log(“onChecked调用”);
},
未检查:函数(){
//这也仅在ajax重新加载之前调用
console.log(“未检查调用”);
}
});
}
$(文档).delegate(“.按钮操作”,“单击”,函数(){
$.ajax({
//Noraml ajax参数
})
.完成(功能(数据){
if(data.success){
//重新装载
$(“#body').load(document.URL+”#body');
复选框_eventlistener();
}
});
});
$(函数(){
复选框_eventlistener();
})


做些事情
恐怕不行。第一次可以,但在重新加载页面后,按钮什么也不做。是否需要在.load()方法中添加选择器后缀表达式?根据JQuery文档:“当使用不带后缀的选择器表达式的URL调用.load()时,内容会在删除脚本之前传递到.html()。这会在丢弃脚本块之前执行脚本块。If.load()使用附加到URL的选择器表达式调用,但是,脚本在更新DOM之前被剥离,因此不会执行。“如果没有“+”#body”部分,它会造成混乱,它会复制
body
。我可以确认,如果url末尾没有选择器,它可以工作,但也会复制#主体。Element您是否尝试过.load()以外的其他方法?比如.html()?我不认为
html()
方法可以做
load()
方法可以做的事情。。我不知道这对我有什么用。