jQuery - объединяет «подтвердить» и «некоторое другое действие» - PullRequest
2 голосов
/ 02 ноября 2010

У меня есть следующий код, который просто использует модальное диалоговое окно jquery ui, чтобы «подтвердить» любой щелчок по ссылке.Если они нажимают OK, то он отправляет их на исходную ссылку.Он отлично работает, так что не читайте его слишком подробно =)

    $('.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), в то же время делая одну зависимость от вывода другой?что я пытаюсь достичь.

Заранее спасибо за любую помощь.Впервые пост здесь, так что будьте добры =)

Ответы [ 3 ]

0 голосов
/ 02 ноября 2010

хорошо, один очень простой подход, который, как я понял, вы хотите достичь, состоит в том, чтобы проверить, имеет ли элемент прикрепленный к нему класс подтверждения, прежде чем предотвращать какое-либо поведение по умолчанию, а что нет

0 голосов
/ 02 ноября 2010

Я думаю, вы, вероятно, сможете разобраться, просто прикрепив код к классу подтверждения перед классом сброса.Просто поместите его выше в вашем документе. Уже или где бы вы ни указали события.

0 голосов
/ 02 ноября 2010

Я не знаю, будет ли это работать, но попробуйте создать обработчики .live в обратном порядке. Я думаю, что они могут сработать с последней привязанной к первой привязанной.

...