2016-10-28 1 views
0

Я не понимаю, почему кнопка нажала событие, которое он стреляет 2 раза .... Я рисую 2 карты для материализации css ... и когда я нажимаю кнопку, он проверяет, клиентский сеанс запускается и что-то делает ... иначе он открывает модальный. Но щелчок должен стрелять только один раз, я получаю 2 раза Alert («Chango»), на 1 клик ... HELP PLS !!, вот код:Кнопка click выполнить 2 раза по модальному jquery

function list_section(data) { 
    var p = JSON.parse(data); // 2 results 
    $.each(p, function(i, item) { 
    if (item.SECTION_ID == 1) { 
     $("#president").append(
      '<div class="col s6">' + 
      '\<div class="card medium sticky-action" id="president_'+item.POLITIC_ID+'">' + 
      '<div class="card-image waves-effect waves-block waves-light">' + 
      '<div class="video-container">' + 
      ' <iframe src="' + baseurl + 'public/uploads/' + item.POLITIC_FILE + '" frameborder="0" allowfullscreen controls></iframe>' + 
      '</div>' + 
      '</div>' + 
      '<div class="card-action">' + 
      '<span class="card-title activator grey-text text-darken-4">' + item.POLITIC_NAME + '&nbsp' + item.POLITIC_LASTNAME + '<i class="material-icons right">more_vert</i></span>' + 
      '<div class="row" style="margin-top:10px;margin-bottom:0px;">' + 
      '<div class="col s3">' + 
      '<button class=" btn waves-effect modal-trigger waves-light red darken-3 disapprove disapprove_president" data-target="verification" type="submit" name="action" ">Desapruebo</button>' + 
      '</div>' + 
      '<div class="col s3 offset-s4">' + 
      '<button class=" btn waves-effect modal-trigger waves-light light-green darken-3 aprove aprove_president" data-target="verification" type="submit" name="action" ">Apruebo</button>' + 
      '</div>' + 
      '</div>' + 
      '</div>' + 
      '<div class="card-reveal">' + 
      '<span class="card-title grey-text text-darken-4">' + item.POLITIC_NAME + '&nbsp' + item.POLITIC_LASTNAME + '<i class="material-icons right">close</i></span>' + 
      '<p>Here is some more information about this product that is only revealed once clicked on.</p>' + 
      '</div>' + 
      '</div>' + 
      '<input type="hidden" id="' + item.POLITIC_ID + '">' + 
      '</div>' 
     ); 
     $(document).on('click', '.aprove , .disapprove', function() { 
      // $(".aprove , .disapprove").unbind("click"); 
      // $(".aprove , .disapprove").on("click", selectKeepFirstOfAll); 
      if (sesion != "") { 
       if ($(this).attr('class').split(' ').pop() == 'aprove_president') { 
        alert("chango"); 
        var data = {} 
        $.ajax({ 
         url: baseurl+'result/aprove', 
         type: 'POST', 
         data: data 
        }) 
        .done(function() { 
         console.log("success"); 
        }) 
        .fail(function() { 
         console.log("error"); 
        }) 
        .always(function() { 
         console.log("complete"); 
        }); 
       } 
       else if ($(this).attr('class').split(' ').pop() == 'disapprove_president') { 
       } 
      } 
      else { 
       $('#verification').openModal(); 
      } 
     }); 
    } 

ответ

0

Переместить $(document).on('click'...) вне list_section функция (сделайте ее глобальной). Вы добавляете обработчик onclick для каждого раздела, который вы обрабатываете.

+0

Хорошо, но мне нужно item.POLITIC_ID ... для ajax request = ( –

+0

У вас уже есть это. Вы можете сделать что-то вроде этого: '$ (this) .closest (" div.col.s6 ") .find ('input [type = hidden]'). last(). attr ('id') '(добавьте класс« politic_id »к вводу, чтобы сделать селектор более простым). – Tibrogargan

+0

@ Ragnar ссылается на данные, когда вы добавьте обработчик кликов в любом случае, это будет плохой идеей, он сохранит эту ссылку и отправит один набор данных независимо от того, какую кнопку вы нажмете. В настоящее время он будет вызывать всех обработчиков каждый раз, когда вы нажимаете любую кнопку, - но даже если вы исправите это, вы можете 'т жесткий код данных в обработчик. Вам придется либо хранить ваши данные где-то в JavaScript, либо читать его с вашего HTML – Tibrogargan