2

我有以下代码,它只是使用 jquery ui 模式对话框来“确认”对链接的任何点击。如果他们单击“确定”,则会将它们发送到原始链接。它工作正常,所以不要费心阅读它太详细=)

    $('.confirm').live('click', function(e) {
  e.preventDefault();
  var theHref = $(this).attr('href');
  var confirmText = 'Are you sure?';
  if ($(this).attr('confirm')) {
   confirmText = $(this).attr('confirm');
  }
  confirmDialog.html(confirmText);
  confirmDialog.dialog({
   buttons: {
    'OK': function() {
     window.location = theHref;
     $(this).dialog('close');
    },
    Cancel: function() {
     $(this).dialog('close');
     return false;
    }
   }
  });
  confirmDialog.dialog('open');
  return false;
 });

然后,我有一堆其他的任意功能。比如,这样说:

    $('a.reset').live('click', function(e) {
  e.preventDefault();
  $(this).parents('form')[0].reset();
 });

这只是一个重置表单的链接(如输入类型 = 重置)。此功能也可以正常工作。请注意,这只是一个任意示例。我通过类附加了许多不同的 JS 功能片段。

我遇到的问题是堆叠这两个。在这个例子中,一些重置链接我可能需要确认,一些我可能不需要。像这样:

<a href="" class="reset confirm">Reset on confirmation</a>
<a href="" class="reset">Reset without confirmation</a>

当然,问题在于第一个示例不关心确认 - 它只是继续并重置。有什么方法可以继续保持这些代码的独立和模块化(就像在 HTML 示例中一样),同时使一个依赖于另一个的输出?

我希望很清楚我想要达到的目标。

提前感谢您的任何帮助。第一次在这里发帖,所以很好=)

4

3 回答 3

0

我不知道这是否可行,但尝试以相反的顺序创建 .live 处理程序。我认为他们可能会从最后一个附加到第一个附加触发。

于 2010-11-02T09:01:27.227 回答
0

好吧,一种非常简单的方法从我的理解中猜测您想要实现的目标是在阻止任何默认行为之前检查元素是否附加了确认类,以及什么不是

于 2010-11-02T09:03:03.483 回答
0

我认为您可以通过简单地将代码附加到重置类之前的确认类来解决这个问题。只需将它放在您的 document.ready 或您指定事件的任何位置的更高位置。

于 2010-11-02T09:03:51.730 回答