2014-08-28 205 views
0

我使用的模式從引導如何從引導模式

<div aria-hidden="hide" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" id="myModal" class="modal fade" style="display: none;"> 
    <div class="modal-dialog"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <h4 id="myModalLabel" class="modal-title"></h4> 
      </div> 
      <div id="myModalBody" class="modal-body modalScroll"></div> 
      <div class="modal-footer"> 
       <button data-dismiss="modal" class="btn btn-default" type="button">Close</button> 
      </div> 
     </div> 
    </div> 
</div> 

這是我的主要模式對話框趕上事件,我發送一些信息,並顯示模式,當我需要的時刻來通知用戶。但我的想法是使用這種模式來顯示圖像,當用戶選擇一個我會保存爲頭像。因此,我創建功能象下面這樣:

<script> 
    $('#avatar').click(function() { 
     showMessage(); 
    }); 

    $('#eee').on('click', function() { 
     alert('333'); 
    }); 

    function showMessage(){ 
     var txto = '<div id="eee">test me test</div>'; 
     $('#myModalLabel').append('Coose Your avatar'); 
     $('#myModalBody').append(txto); 
     $('#myModal').modal('show'); 
    } 
</script> 

現在,當我去頁面上,點擊DIV ID =頭像我會看到模式窗口,但是當我點擊:考我,我都沒有結果。那麼有沒有辦法做到這一點?

+0

這個問題的答案的問題是[事件委託( http://stackoverflow.com/questions/1687296/what-is-dom-event-delegation) – 2014-08-28 22:26:07

回答

2

嘗試添加:

$('#eee').on('click', function() { 
    alert('333'); 
}); 

內showMessage()...您的問題是,你必須重新綁定事件,如果他們之後添加到動態添加元素(文件)。就緒或在這種情況下,頁面渲染...

每當我這樣做,我只是做一個大的函數稱爲rebindEvents(),我可以調用讓頁面知道我的新項目...只是一個警告,它不是偉大的表現,如果你結束了你必須處理的很多jquery元素,淘汰賽是一個更好的庫,用於處理動態html,然後這樣做。

也,我假設你要呈現化身的列表,所以你可能要交換EEE的一類,而不是ID ...

+0

你說得對:bind(「click」,abc); function abc(){ alert('eee'); 'showMessage中的'' }。但我不知道什麼是目前的頭像列表呃 – user3733929 2014-08-28 22:48:41

+0

像我說的,你應該看看http://knockoutjs.com/ ...這是一個更好的方式來處理動態html和所有的事件傳播/冒泡的東西都是爲你處理的......如果你使用重新綁定事件的方法,你將根據你正在做的任何事情的複雜性,結束一些嚴重的記憶問題。 – zach 2014-08-28 23:31:30