2013-02-19 44 views
1

我在我的項目中使用Bootstrap v2.X,我想使用模態函數打開外部文件。Jquery函數不工作在Bootstrap模式下

首先,我應該使用的代碼是:

<a href="view_graphics.php" class="btn btn-warning btn-large" data-toggle="modal">Graphics</a> 

,但它不爲我工作。然後我用:

<a href="view_graphics.php" id="graphics" class="btn btn-warning btn-large">Graphics</a> 

,我把代碼的Jquery:

$('a#graphics').click(function(e) { 
      e.preventDefault(); 
      var url = $(this).attr('href'); 
      if (url.indexOf('#') == 0) { 
       $(url).modal('open'); 
      } else { 
       $.get(url, function(data) { 
        $('<div class="modal hide fade modal-graphics">' + data + '</div>').modal(); 
       }).success(function() { $('input:text:visible:first').focus(); }); 
      } 
     }); 

和它的作品!

那麼,但它不是主要問題。問題是,當模式打開,不工作我的代碼jQuery。

這是我的模態外部:

<div class="modal-header"> 
    <a class="close" data-dismiss="modal">x</a> 
    <h3>Titulo modal</h3> 
</div> 
<div class="modal-body"> 
    <div class="window"> 
     <div class="nom_epi"></div> 
    </div> 
</div> 
<div class="modal-footer"> 
    <a class="btn btn-primary" href="javascript:print();">Imprimir</a> 
    <a class="btn" data-dismiss="modal">Cerrar</a> 
</div> 

如果我把代碼的文件原件:

$(document).ready(function() { 
$('.nom_epi').click(function() { alert("hello"); }); 
}); 

它不工作! 外部模式會忽略原始文件的Jquery代碼。這很奇怪,因爲bootstrap CSS解釋得很好。

我認爲這是由於我用來打開外部模式的jQuery代碼。

+2

通常直接孩子嘗試改變代碼$(「身體」)。在(」點擊','.nom_epi',function(){alert(「hello」);}) – 2013-02-19 16:31:36

+0

It Works !!謝謝你 – Alexander 2013-02-20 15:25:58

+0

不客氣!如果你想了解它是如何工作的,請檢查一下https://tutsplus.com/lesson/bind-live-delegate-huh/ – 2013-02-20 15:52:59

回答

8

您在文檔準備好時綁定事件,因此它僅綁定到當時存在的元素。我建議使用on()函數。

的建議大衛給出了他的意見應該很好地工作。

$( '身體')上( '點擊', '.nom_epi',函數(){警報( 「你好」); })

一般來說,你會嘗試和功能綁定的東西進一步下跌的DOM樹,但這些模態都是<body>

+1

It Works !!謝謝你 – Alexander 2013-02-20 15:25:30