【问题标题】:Using a click command once, and then disabling it使用单击命令一次,然后禁用它
【发布时间】:2013-05-20 23:36:22
【问题描述】:

这就是我想要做的。我在提示 0 上有两个按钮,是或否。如果单击“是”,该框将向左移动,同时淡出并显示“提示 1”。如果单击否,则框向右移动,出现提示 2。我正在使用 Z-index 来告诉它哪个提示应该在顶部。现在,当我单击“是”时,它会转到提示 1,如果我单击“是”或“否”按钮所在的区域,则什么也不会发生。这里一切都很好。

当我单击“否”时,它会淡出(不会向左走,但这不是我主要关心的问题)并转到提示 2。但是当我单击“区域”时(“是”看不到),“是”是,它会提示 1。我已经尝试在两个脚本上取消绑定点击,但它不起作用。我做错了什么?

谢谢

$(document).ready(function () {
    $('.appIMG1').one('click.appIMG1',function () {
        $(this).unbind('click');
        $("#app1").animate({
            left: '250px',
            opacity:0
        });
        $("#app2").fadeIn('slow');
    });
});


$(document).ready(function () {
    $(".appIMG2").one('click.appIMG2', function() {
        $(this).unbind('click');
        $("#app1").animate({
            right: '250px',
            opacity:0
        });
        $("#app3").fadeIn("slow");
    });
});

提示 0 的 Z 索引为 10,提示 1 为 9,提示 2 为 8。

【问题讨论】:

  • 我们能搞定这个吗?

标签: javascript html css unbind


【解决方案1】:

您需要解除对所有内容的点击事件的绑定,而不仅仅是被点击的项目。无需使用$(this).unbind('click'),您需要将其与所有可点击元素解除绑定,如下所示(这是仅使用第二个按钮的示例,但两者都需要这样做):

$(".appIMG2").one('click.appIMG2', function() {
    $('.appIMG1, .appIMG2').unbind('click');
    $("#app1").animate({
        right: '250px',
        opacity:0
    });
    $("#app3").fadeIn("slow");
    });
});

【讨论】:

  • 谢谢杰克。那行得通!我还有一个问题,当我单击“是”时,我试图让它向左移动,它通过向左移动和淡化来动画。但是如果我单击否,它的作用就不一样了。我希望它移动到右侧并在我单击否时淡出,但是当我在第二个脚本中将左侧替换为右侧时它不起作用。它只是淡出。当我使用左而不是右时它可以工作。我做错了什么?
  • 您的 CSS 非常复杂,因此很难破译。我建议重构大部分内容。但是,如果您不想这样做并且只想让框向右移动并淡出,您应该将right: '250px' 更改为left: '550px' 或类似的数字。同样,这不是一个很好的解决方案,但它适用于您的特定代码。 jsfiddle.net/jakelauer/4ZQLq/5
猜你喜欢
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 2018-06-07
  • 1970-01-01
  • 2017-04-17
  • 2019-09-23
  • 1970-01-01
  • 2017-09-26
相关资源
最近更新 更多