2013-07-03 16 views
20

ich eine Schaltfläche in einem modalen Fenster haben:Button-Klick nicht in modalen Fenster Brennen (Bootstrap)

<button id="submit_btn" class="btn btn-link">Send the invitation</button> 

Ich versuche, den Klick zu erfassen:

$('#submit_btn').click(function(event){ 
    event.preventDefault(); 
    alert("GO"); 
}); 

ich gelesen habe, dass Tastenklicks werden in modalen Fenstern verschluckt, und um dies zu verhindern, verwenden Sie event.preventDefault(). Aber das funktioniert nicht. Ich kann das Klickereignis dieser Schaltfläche nicht erfassen.

Was fehlt mir noch?

Alle Tipps werden sehr geschätzt!

+2

Öffnen Sie die Konsole und versuchen Sie das Ereignis auszulösen .. Überprüfen Sie, ob es funktioniert .. Wenn es funktioniert, dann könnte es ein 'Z-Index' Problem –

+0

Öffnen Sie Ihre Konsole und sehen Sie, ob es Javascript-Fehler gibt. Das scheint mir gut zu gehen. –

+0

Ich habe eine jsfiddle, die funktioniert - http://jsfiddle.net/GqD4f/8//edit Ihre Vorgehensweise sollte funktionieren, hier ist eine jsfiddle, die funktioniert - http://jsfiddle.net/CR3bM/1/ - Sind Sie nicht Setzen Sie Ihren Event-Handler in DOM bereit? – Ross

Antwort

51

Versuchen Sie, diese -

$(document).on("click", "#submit_btn", function(event){ 
    alert("GO"); 
}); 

Oder diese -

$(document).delegate("#submit_btn", "click", function(event){ 
    alert("GO"); 
}); 

Wenn Sie eine ältere Version von jQuery verwenden Sie stattdessen die Live-Methode verwenden.

Live-Methode (Verwendung dieses nur, wenn Sie müssen)

$("#submit_btn").live("click", function(event){ 
    alert("GO"); 
}); 

Ich bin ziemlich sicher, dass eine dieser drei Methoden über Ihr Problem lösen wird. Der Grund dafür, dass Ihr Event-Handler nicht funktioniert, liegt darin, dass Ihr submit_btn-Element zum Zeitpunkt der Auswertung Ihres Event-Handlers nicht existiert. Die oben genannten 3 Handler, die ich Ihnen gegeben habe, werden an einem submit_btn-Element arbeiten, das jetzt existiert, und in der Zukunft.

bearbeiten/

Hier ist ein jsfiddle, das funktioniert - http://jsfiddle.net/GqD4f/8/

/andere bearbeiten

Ich habe einen jsfiddle den Ansatz verwenden Sie in Ihrem Beitrag hatte und es funktioniert - http://jsfiddle.net/CR3bM/1/

Stellen Sie Ihren Event-Handler nicht in DOM bereit?

+0

'Live' ist abgetastet. –

+0

Yes Live ist ab Version 1.7.x veraltet und wird in Version 1.9 entfernt. Wenn er eine Version vor 1.4.2 verwendet, muss er live verwenden. Es hat auch eine langsamere Leistung als mit Delegate oder auf Methode - http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/ – Ross

+0

Ich benutze jquery 1.9.1. Danke für deine Antworten! – fumeng

2

Dies funktioniert für mich:

$(document).on("click", "#submit_btn", function(event){ 
    alert("GO"); 
}); 
0

Hier ist, wie ich mit Klasse tat (.copy-text).

Javascript:

$(document).on('click', '.copy-text', function(){ 
    console.log($(this)); 
}); 

Modal html:

<div class="modal fade" id="someid" tabindex="-1" aria-hidden="true"> 
     <div class="modal-dialog"> 
      <div class="modal-body">  
       <ul class="list-group"> 
       <li class="list-group-item copy-text">Some text</li> 
       </ul> 
      </div> 
     </di> 
    </di> 
0

Ich hatte dieses Problem jetzt gerade.

Aus irgendeinem Grund, wenn Sie

$(document).on("click","span.editComment",function(event) { 

innerhalb einer von diesen wickeln:

$(document).ready(function() { 

Dann ist es nicht das Klicken für einige seltsame Grund zu fangen. Entfernen Sie einfach die umgebende Dokument bereit:

$(document).ready(function() {} 

Und sollte Ihr Code arbeiten!

Verwandte Themen