2013-11-20 4 views
1

я этот кусок кода, который наконец-то работает для меняАякса очистить, если это возможно по представить

$(function(){ 
     $('.submit1').click(function(){ 
      $.ajax({ 
       type: "POST", 
       url: "delanno.php", 
       data: $("#myform1").serialize(), 
       beforeSend: function(){ 
        $('#result').html('<img src="images/loading.gif" />'); 
       }, 
       success: function(data){ 
        $('#result').html(data); 
       } 
      }); 
     }); 
     $('.deleter').on('click', function(){ 
      $(this).closest('.announce-box').remove(); 
     }) 
    }); 

    $(function(){ 
     $('.submit2').click(function(){ 
      $.ajax({ 
       type: "POST", 
       url: "delanno.php", 
       data: $("#myform2").serialize(), 
       beforeSend: function(){ 
        $('#result').html('<img src="images/loading.gif" />'); 
       }, 
       success: function(data){ 
        $('#result').html(data); 
       } 
      }); 
     }); 
     $('.deleter').on('click', function(){ 
      $(this).closest('.announce-box').remove(); 
     }) 
    }); 
     $(function(){ 
     $('.submit3').click(function(){ 
      $.ajax({ 
       type: "POST", 
       url: "delanno.php", 
       data: $("#myform3").serialize(), 
       beforeSend: function(){ 
        $('#result').html('<img src="images/loading.gif" />'); 
       }, 
       success: function(data){ 
        $('#result').html(data); 
       } 
      }); 
     }); 
     $('.deleter').on('click', function(){ 
      $(this).closest('.announce-box').remove(); 
     }) 
    }); 

возможно объединить все 3 комплекта в 1 кусок кода?

ответ

3

Я предполагаю, что кнопки не имеют какие-либо другие классы, и если да, вы можете получить последнюю цифру с this.className.slice(-1) и нацелены на все кнопки с одним обработчиком событий и использовать последнюю цифру, чтобы получить правильную форму:

$(function(){ 
    $('[class^="submit"]').on('click', function() { 
     var n = this.className.slice(-1); 
     $.ajax({ 
      type : 'POST', 
      url : 'delanno.php', 
      data : $('#myform' + n).serialize(), 
      beforeSend: function(){ 
       $('#result').html('<img src="images/loading.gif" />'); 
      } 
     }).done(function(data) { 
      $('#result').html(data); 
     }); 

     $('.deleter').on('click', function(){ 
      $(this).closest('.announce-box').remove(); 
     }); 
    }); 
}); 

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

$(function(){ 
    $('[id^="myform"]').on('submit', function(e) { 
     e.preventDefault(); 
     $.ajax({ 
      type : 'POST', 
      url : 'delanno.php', 
      data : $(this).serialize(), 
      beforeSend: function(){ 
       $('#result').html('<img src="images/loading.gif" />'); 
      } 
     }).done(function(data) { 
      $('#result').html(data); 
     }); 

     $('.deleter').on('click', function(){ 
      $(this).closest('.announce-box').remove(); 
     }); 
    }); 
}); 
+0

Или, если каждая кнопка отправки находится внутри соответствующей формы 'данных: $ (это) .closest («форма») сериализации()' ... – nnnnnn

+0

@nnnnnn если они представить кнопки в форме -. вероятно, было бы лучше использовать функцию form.submit, хотя –

+0

Я не думаю, что '$ ('. deleter'). on ('click' ...' находится внутри submit onclick. – ioums

1

Да , это должно быть ...

post = function (ele) { 
    $.ajax({ 
     type: "POST", 
     url: "delanno.php", 
     data: $(ele).serialize(), 
     beforeSend: function() { 
      $('#result').html('<img src="images/loading.gif" />'); 
     }, 
     success: function (data) { 
      $('#result').html(data); 
     } 
    }); 
}; 

$(function() { 
    $('.submit1').on('click', post($('#submit1'))); 
    $('.submit2').on('click', post($('#submit2'))); 
    $('.submit3').on('click', post($('#submit3'))); 
    $('.deleter').on('click', function() { 
     $(this).closest('.announce-box').remove(); 
    }); 
}); 
+0

это дает мне синтаксическую ошибку, не уверен, почему, рядом с первым .submit1 – Sickest

+0

Я обновил код, извините, я не могу проверить это – geedubb