【问题标题】:JQuery: Dynamically Remove Elements (Isolate Function)JQuery:动态删除元素(隔离函数)
【发布时间】:2014-01-22 00:01:32
【问题描述】:

小提琴 - http://jsbin.com/oloriTo/1/edit

删除元素不是问题,但是当我单击 remove false 按钮​​(类为 .rf)时,我不想再删除元素,除非单击了 remove true(类为 .rt)按钮。

目前,当我单击 remove true 元素时,它会按预期进行。 (演示有点糟糕,但它明白了要点)当我点击删除错误按钮时,我仍然可以点击 .container div 中的元素并删除它们,这不应该发生。

非常感谢任何帮助。

$(document).ready(function() {
  var enabled = false;
  $('.rt').click(function() {
    enabled = true;

    if (enabled === true) {
      $('.container *').on('mousedown touchstart', function() {
        $(this).remove();
        return false;
      });
    } else {
      enabled = false;
    }
  });

  $('.rf').click(function() {
    enabled = false;
  });
});

【问题讨论】:

  • 条件没有意义,enabled 将始终为真,因为您在上面的行中将其设置为真?
  • enabled 的 var 默认设置为 false。当按钮 remove true 被点击时启用变为 true,然后当 remove false 按钮​​被点击时变为 false。
  • 不管你设置什么,你总是在条件之前的那一行把它重置为真,所以就像在做if (true === true)一样,它总是真的,你只是继续打桩在事件处理程序上。
  • 哦,我不知道。感谢您的帮助。

标签: javascript jquery


【解决方案1】:

您正在将删除代码绑定到已启用的设置代码中。拆开来看一下.rf.rt设置的变量。

$(document).ready(function() {
  var enabled = false;
  $('.rt').click(function() {
    enabled = true;
  });

  $('.rf').click(function() {
    enabled = false;
  });
  $('.container').on('mousedown touchstart', '*',function() {
      if (enabled)      
        $(this).remove();
      return false;
   });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-23
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 2020-09-28
    • 2020-07-19
    相关资源
    最近更新 更多