2016-11-29 2 views
0

Ich stoße auf dieses seltsame Problem, das mich ein bisschen verrückt macht. Ich habe ein MVC 5-Projekt, das eine Teilansicht hat, die beim Klicken auf eine Schaltfläche als modal angezeigt wird. Das Problem ist, dass ich zweimal hintereinander auf die Schaltfläche klicken muss, damit die partielle Ansichtsmethode ausgelöst wird. Anscheinend wird dies verursacht, wenn ich $(document) als Selektor verwende, um das Ereignis auszulösen. Es funktioniert ansonsten gut. Ich muss $(document) als Selektor verwenden, da ich die Schaltflächen dynamisch erzeuge und andere Selektoren Click-Handler nicht registrieren. Das ist mein modal Container:Teilansicht Modal rendert auf Doppelklick

<div id="modal-container" class="modal fade" 
    tabindex="-1" role="dialog"> 
    <div class="modal-content"> 
    </div> 
</div> 

Hier ist der HTML-Code für die Schaltfläche Auslösen des Ereignisses:

<a class="modal-link" href="/Customer/EditGroup/@item.Customer_Group_Code"> 
     <img src="~/images/editIcon.png" alt="Edit" /> 
    </a> 

Die jQuery-Methode Ich Aufruf sieht wie folgt aus:

$(document).on('click', '.modal-link', function (e) { 
    e.preventDefault(); 
    $(this).attr('data-target', '#modal-container'); 
    $(this).attr('data-toggle', 'modal'); 

}); 

und Hier ist die Controller-Methode für die Ansicht:

public ActionResult EditGroup(int id) 
    { 
     ViewBag.id = id; 
     return PartialView("_EditGroup"); 
    } 
+0

Es hat nichts mit '$ (document)' zu tun. Alles, was Sie beim ersten Klick tun, ist das Hinzufügen der Attribute "Datenziel" und "Datenumschalten". In dem zweiten Klick, weil diese Attribute jetzt existieren, wird das Modal jetzt ausgelöst (aber Sie fügen die Attribute wieder hinzu, was ein bisschen sinnlos ist). Sie müssen mehr Kontext darüber geben, was Sie tatsächlich tun, aber die 'data- *' - Attribute müssen zunächst hinzugefügt werden. –

+0

Sie hatten Recht. Ich folgte im Grunde einem Tutorial, das es so hatte. Ich habe die Datenattribute der Schaltfläche hinzugefügt, die sie behoben hat. Es ist seltsam, warum das Modal auftauchte, als ich einen anderen Selektor als $ (Dokument) benutzte – psyoptica

Antwort

0

hinzufügen: return false; zu Ihrem Befehl. Dies sollte den Fehler beheben.

$(document).ready(function() {  
    $(document).on('click', '.modal-link', function (e) { 
     e.preventDefault(); 
     $(this).attr('data-target', '#modal-container'); 
     $(this).attr('data-toggle', 'modal'); 
     return false; 
    });  
}); 
Verwandte Themen