Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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 数据属性未更新且onclick事件仍在其上_Javascript_Jquery - Fatal编程技术网

Javascript 数据属性未更新且onclick事件仍在其上

Javascript 数据属性未更新且onclick事件仍在其上,javascript,jquery,Javascript,Jquery,我对此onclick事件效果有问题: /*“#generateZip”*/ $(“#generateZip[data readyzip='start']”)。单击(函数(事件){ event.preventDefault(); /*更改样式/css*/ $('#generateZip').addClass(“已禁用”); $('#generateZip').html(“正在进行中!”); /*叫拉链*/ jQuery.ajax({ 键入:“POST”, 网址:'http://www.monde-

我对此onclick事件效果有问题:

/*“#generateZip”*/
$(“#generateZip[data readyzip='start']”)。单击(函数(事件){
event.preventDefault();
/*更改样式/css*/
$('#generateZip').addClass(“已禁用”);
$('#generateZip').html(“正在进行中!”);
/*叫拉链*/
jQuery.ajax({
键入:“POST”,
网址:'http://www.monde-du-rat.fr/API/zipMC.php',
超时:8000,
数据类型:“文本”,
数据:{
打电话:“是的”
},
“success”:函数(jqXHR、textStatus、errorboorn){
log(“AJAX成功:)-statut“+textStatus);
/*更改属性*/
$('#generateZip').attr('data-readyzip','yes');
设置超时(readyZip,3000);
},
“error”:函数(jqXHR、textStatus、errorshown){
log(“AJAX失败:/-statut”+textStatus);
/*更改属性*/
$('#generateZip').attr('data-readyzip','no');
setTimeout(readyZipFAIL,3000);
}
});
});
/*readyZip()*/
函数readyZip(){
$('#generateZip').removeClass(“禁用的btn主”);
$('#generateZip').addClass(“btn成功”);
$('#generateZip').html(“下载就绪!”);
$('#generateZip').attr(“href,”http://www.monde-du-rat.fr/resources/data/documentMC.zip")
}
/*readyZipFAIL()*/
函数readyZipFAIL(){
$('#generateZip').removeClass(“btn主”);
$('#generateZip').addClass(“btn危险”);
$('#generateZip').html(“问题”);
}
即使数据readyzip更新为“yes”值,onclick事件仍然存在,并且我无法下载我的文件。。。怎么了?

此代码:

$("#generateZip[data-readyzip='start']").click(function...
查找运行时的所有相关元素(并将单击处理程序连接到这些元素)。以后当你改变事情时,它不会再次检查它们

两种选择:

  • 如果愿意,可以使用事件委派:

    $(document).on("click", "#generateZip[data-readyzip='start']", function...
    
    这将钩住
    单击
    文档上的
    事件,然后检查它是否通过与选择器匹配的任何元素,同时从事件发生的元素冒泡到
    文档

    文档
    当然是处理此问题的一个非常深入的层面。您可能希望将事件挂接到离元素更近的容器上

  • 由于只有一个按钮,因此您可以钩住该按钮的单击,但仅在该按钮具有相关属性时才对其进行操作:

    $("#generateZip").click(function(e) {
        if ($(this).attr("data-readyzip") !== "start") {
            // Don't do it; prevent default or cancel bubbling if you like
            return;
        }
        // ...
    
  • 此代码:

    $("#generateZip[data-readyzip='start']").click(function...
    
    查找运行时的所有相关元素(并将单击处理程序连接到这些元素)。以后当你改变事情时,它不会再次检查它们

    两种选择:

  • 如果愿意,可以使用事件委派:

    $(document).on("click", "#generateZip[data-readyzip='start']", function...
    
    这将钩住
    单击
    文档上的
    事件,然后检查它是否通过与选择器匹配的任何元素,同时从事件发生的元素冒泡到
    文档

    文档
    当然是处理此问题的一个非常深入的层面。您可能希望将事件挂接到离元素更近的容器上

  • 由于只有一个按钮,因此您可以钩住该按钮的单击,但仅在该按钮具有相关属性时才对其进行操作:

    $("#generateZip").click(function(e) {
        if ($(this).attr("data-readyzip") !== "start") {
            // Don't do it; prevent default or cancel bubbling if you like
            return;
        }
        // ...
    
  • 此代码:

    $("#generateZip[data-readyzip='start']").click(function...
    
    查找运行时的所有相关元素(并将单击处理程序连接到这些元素)。以后当你改变事情时,它不会再次检查它们

    两种选择:

  • 如果愿意,可以使用事件委派:

    $(document).on("click", "#generateZip[data-readyzip='start']", function...
    
    这将钩住
    单击
    文档上的
    事件,然后检查它是否通过与选择器匹配的任何元素,同时从事件发生的元素冒泡到
    文档

    文档
    当然是处理此问题的一个非常深入的层面。您可能希望将事件挂接到离元素更近的容器上

  • 由于只有一个按钮,因此您可以钩住该按钮的单击,但仅在该按钮具有相关属性时才对其进行操作:

    $("#generateZip").click(function(e) {
        if ($(this).attr("data-readyzip") !== "start") {
            // Don't do it; prevent default or cancel bubbling if you like
            return;
        }
        // ...
    
  • 此代码:

    $("#generateZip[data-readyzip='start']").click(function...
    
    查找运行时的所有相关元素(并将单击处理程序连接到这些元素)。以后当你改变事情时,它不会再次检查它们

    两种选择:

  • 如果愿意,可以使用事件委派:

    $(document).on("click", "#generateZip[data-readyzip='start']", function...
    
    这将钩住
    单击
    文档上的
    事件,然后检查它是否通过与选择器匹配的任何元素,同时从事件发生的元素冒泡到
    文档

    文档
    当然是处理此问题的一个非常深入的层面。您可能希望将事件挂接到离元素更近的容器上

  • 由于只有一个按钮,因此您可以钩住该按钮的单击,但仅在该按钮具有相关属性时才对其进行操作:

    $("#generateZip").click(function(e) {
        if ($(this).attr("data-readyzip") !== "start") {
            // Don't do it; prevent default or cancel bubbling if you like
            return;
        }
        // ...
    

  • 事件处理程序附加到绑定时与选择器匹配的所有元素,以后更改数据属性不会删除事件处理程序事件处理程序附加到绑定时与选择器匹配的所有元素,稍后更改数据属性不会删除事件句柄绑定时,事件句柄附加到与选择器匹配的所有元素,稍后更改数据属性不会删除事件句柄绑定时,事件句柄附加到与选择器匹配的所有元素,稍后更改数据属性不会删除事件句柄两个很棒的选项!第三个选项可以将
    .on
    .off
    与命名空间事件一起使用。e、 g.
    $('#generateZip')。打开('click.generate-zip',…)
    $('#generateZip')。关闭('click.generate-zip')
    ,在ajax手柄中有两个很棒的选项!第三个选项可以与一起使用
    .on
    .off