Jquery .click问题

时间:2011-02-23 11:58:54

标签: javascript jquery html jquery-ui javascript-events

我面临着非常奇怪和困难的问题。我正在开发一个Web应用程序,我在其中创建了一些小部件。如果我点击图标,窗口小部件编辑器将出现在模块化弹出窗口中,用户可以输入他的数据,该数据将作为标签显示在仪表板上。我在仪表板上放置标签上方的“编辑”按钮,现在我想添加删除按钮,假设用户将在仪表板上添加小部件,之后他发现他不需要该仪表板,所以他点击删除按钮小部件应该删除,如果用户在删除后再次想要那个小部件时,当他点击之前删除的特定小部件的图标时,该小部件应该再次出现。我尝试这样做,但是一旦我点击删除按钮,我就可以删除小部件,但是当我点击小部件的图标时,我无法再回来。

请帮我解决这个问题

1 个答案:

答案 0 :(得分:2)

只是猜测你想要做什么,这是一个添加你可以再次关闭的div的例子:

<强>设定:

var WIDGET_MARKUP =
    "<div class='widget'>I'm the widget. " +
    "<span class='close'>Close</span>" +
    "</div>";

// Opens the widget, returns true; if the widget is already
// open, doesn't open a a second and returns false.
function openWidget(onClose) {
  var widget;

  // If there's already one open, don't do anything
  if ($("div.widget").length > 0) {
    // Already open, don't open another
    return false;
  }

  // There isn't, add one
  widget = $(WIDGET_MARKUP);
  widget.appendTo(document.body);
  widget.delegate('span.close', 'click', function() {
    // Remove the widget
    widget.remove();

    // Call the callback if any
    if (onClose) {
      try {
        onClose();
      }
      catch (e) {
      }
    }
  });

  // true = opened the widget
  return true;
}

使用:

$('#btnAddWidget').click(function() {
  var button = this;

  if (openWidget(handleClose)) {
    // Opened the widget, disable our button
    button.disabled = true;
  }

  function handleClose() {
    // Widget was closd, re-enable the button
    button.disabled = false;
  }
});

Live example

显然,只有你想要按钮才能禁用按钮;如果你不这样做,就这样使用它:

<强>设定:

var WIDGET_MARKUP =
    "<div class='widget'>I'm the widget. " +
    "<span class='close'>Close</span>" +
    "</div>";

// Opens the widget, returns true; if the widget is already
// open, doesn't open a a second and returns false.
function openWidget(onClose) {
  var widget;

  widget = $(WIDGET_MARKUP);
  widget.appendTo(document.body);
  widget.delegate('span.close', 'click', function() {
    // Remove the widget
    widget.remove();

    // Call the callback if any
    if (onClose) {
      try {
        onClose();
      }
      catch (e) {
      }
    }
  });
}

使用:

$('#btnAddWidget').click(function() {
    openWidget();
});

Live example