2011-07-11 16 views
1

clickイベントにfancyboxを追加し、fancyboxを使用するclickイベントを呼び出す.liveを使用してjqueryイベントをバインドしています。ここで再帰を防ぐ方法はありますか:内部での.clickイベントによるライブクリックバインド。再帰の防止

$('.remindMe').live('click', function (e) { 
     $(this).fancybox({ 
      'padding': 0, 
      'width': '235', 
      'height': '375', 
      'autoDimensions': false, 
      'hideOnOverlayClick': false, 
      'onComplete': function() { 
       $('div.formControls .bigpinkbutton').click(function() { 
        $('div.reminder-header h2').text("Reminder Sent"); 
        $('div.reminder-header h2').css('border-bottom', 'none'); 
        $('div.reminder-header h2').css('margin-bottom', '0'); 
        $('div.reminder-header h2').css('padding-bottom', '15px'); 
        $('div.reminder-header span').fadeOut(); 
        $('div.reminder-body p').first().html("<strong>Thank you.</strong> This notice is to confirm your product reminder email has been sent."); 
        $('div.reminder-body div.formControls').fadeOut(); 
        var id = $(this).parent().parent().parent().parent().attr("id").replace("remindme", ""); 
        var email = $(this).parent().find("#reminder_email").val(); 
        $.post(baseURL + "SendReminder", { "email": email, "productID": id }); 
       }); 
      } 
     }).trigger("click"); 
); 

ありがとう。

答えて

3

この

$('.remindMe').live('click', function (e) { 

     $(this).fancybox({ 
      'padding': 0, 
      'width': '235', 
      'height': '375', 
      'autoDimensions': false, 
      'hideOnOverlayClick': false, 
      'onComplete': function() { 
       $('div.formControls .bigpinkbutton').click(function() { 
        $('div.reminder-header h2').text("Reminder Sent"); 
        $('div.reminder-header h2').css('border-bottom', 'none'); 
        $('div.reminder-header h2').css('margin-bottom', '0'); 
        $('div.reminder-header h2').css('padding-bottom', '15px'); 
        $('div.reminder-header span').fadeOut(); 
        $('div.reminder-body p').first().html("<strong>Thank you.</strong> This notice is to confirm your product reminder email has been sent."); 
        $('div.reminder-body div.formControls').fadeOut(); 
        var id = $(this).parent().parent().parent().parent().attr("id").replace("remindme", ""); 
        var email = $(this).parent().find("#reminder_email").val(); 
        $.post(baseURL + "SendReminder", { "email": email, "productID": id }); 
       }); 
      } 
     }).triggerHandler("click"); 
); 
+0

あなたの迅速な返信をありがとう、ありがとう、私はここに何かが欠けているように感じる。もし(どこにいても)? – Jeff

+0

私は自分の答えを編集しましたか? – ShankarSangoli

+0

それは働いた!トリガーとトリガーハンドラーの違いは分かりませんが、それはすべての違いをもたらしました。ありがとう! – Jeff

1

試してみてください。

$('.remindMe:not(.bigpinkbutton)').live('click', function (e) { 

お知らせ:not()句。

+0

ここでの問題は、.live()が、新しく生成された一致要素を、提供されるイベントで更新することです。 Clickイベントをこの要素に適用したいのですが、clickイベントを再度呼び出すときにこのコードを繰り返す必要はありません。生成された要素ごとにこれを1回だけ実行する方法はありますか? – Jeff

0

が手動呼び出し構文を使用してみてください。

$('.remindMe').live('click', function (e) { 
    $.fancybox({ 
     'href': this.href, 
     'padding': 0, 
     'width': '235', 
     'height': '375', 
     'autoDimensions': false, 
     'hideOnOverlayClick': false, 
     'onComplete': function() { 
      $('div.formControls .bigpinkbutton').click(function() { 
       $('div.reminder-header h2').text("Reminder Sent"); 
       $('div.reminder-header h2').css('border-bottom', 'none'); 
       $('div.reminder-header h2').css('margin-bottom', '0'); 
       $('div.reminder-header h2').css('padding-bottom', '15px'); 
       $('div.reminder-header span').fadeOut(); 
       $('div.reminder-body p').first().html("<strong>Thank you.</strong> This notice is to confirm your product reminder email has been sent."); 
       $('div.reminder-body div.formControls').fadeOut(); 
       var id = $(this).parent().parent().parent().parent().attr("id").replace("remindme", ""); 
       var email = $(this).parent().find("#reminder_email").val(); 
       $.post(baseURL + "SendReminder", { "email": email, "productID": id }); 
      }); 
     } 
    }); 
); 
関連する問題