2016-10-28 5 views
0

Ich verstehe nicht, warum die Schaltfläche klicken Ereignis es 2 mal feuern .... Ich zeichne 2 Karten auf materialize css ... und wenn ich den Knopf drücke, überprüft es, ob Die Client-Sitzung ist gestartet und macht etwas ... sonst öffnet sich ein Modal. Aber der Klick darf nur 1 Mal feuern, ich bin immer 2 mal alert ("chango"), auf 1 Klick ... HELP PLS !!, hier ist der Code:Button klicken Ausführen 2 Mal auf Modal 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(); 
      } 
     }); 
    } 

Antwort

0

Bewegen Sie den $(document).on('click'...) außerhalb der list_section Funktion (global). Sie fügen für jeden von Ihnen bearbeiteten Abschnitt einen Onclick-Handler hinzu.

+0

Ok, aber ich brauche die item.POLITIC_ID ... für die Ajax-Anfrage = ( –

+0

Sie haben es schon. Sie könnten so etwas tun: '$ (this) .closes (" div.col.s6 ") .find ('input [type = hidden]'). last() .attr ('id') '(Fügen Sie der Eingabe eine" politic_id "-Klasse hinzu, um den Selektor einfacher zu machen) – Tibrogargan

+0

@Ragnar bezieht sich auf die Daten, wenn Sie fügen Sie den Click-Handler hinzu ist eine schlechte Idee, es wird diese Referenz behalten und senden Sie die eine Reihe von Daten, egal, welche Taste Sie drücken.Zurzeit wird es alle Handler jedes Mal, wenn Sie eine beliebige Taste drücken - aber auch wenn Sie das beheben können 't Hard Code die Daten in den Handler. Sie müssen entweder Ihre Daten irgendwo in JavaScript speichern oder lesen Sie es aus Ihrem HTML – Tibrogargan

Verwandte Themen