2010-11-02 4 views
2

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

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

Надеюсь, это ясно, чего я пытаюсь достичь.

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

ответ

0

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

+0

Ничего. Я не видел, что вы также предотвращаете дефолт в подтверждении. – baruch

+0

Переместите функцию подтверждения на именованную функцию и добавьте функцию сброса 'var ret = true; if ($ (this) .hasClass ("confirm")) ret = confirmFunct(); if (ret)/* код сброса */' – baruch

0

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

0

Я думаю, что вы можете любое по умолчанию вероятно, это просто, просто добавив код в класс подтверждения до класса сброса. Просто поместите его выше в свой document.ready или где вы указываете события.