2015-11-13 69 views
0

我正在使用ajax動態地編寫html代碼,這意味着如果有人點擊一個按鈕,我會編寫鏈接數字的html代碼。動態html和javascript函數

這是html代碼。

<a class="show_figures" id="show_figures0" loop-id="0" href="javascript:showOrHidefigure(0);" style="text-decoration: none;"><b>Show figures</b></a> 

這是JavaScript代碼插入HTML:

<script type='text/javascript'> 
    function showOrHidefigure(id_dummy){ 

     var div = document.getElementById(id_dummy+'figures'); 
     var dummy_id = $('#show_figures'+id_dummy).attr('loop-id') + 'figures' 
     var button = document.getElementById('show_figures'+id_dummy); 
     if(div.style.display == "block"){ 
      div.style.display = "none"; 
      button.innerHTML = "<b>Show figures</b>"; 
     } 
     else{ 
      div.style.display = "block"; 
      if(!document.getElementById($('#show_figures'+id_dummy).attr('data-id')+'displayfigures')){ 

       div.innerHTML = "Downloading Figures<br><br>" 
       button.innerHTML = "<b>Hide figures</b>"; 

       $.ajax({ 
        url: "/manage_figures", 
        type: "GET", 
        async: true, 
        cache: false, 
        dataType: 'json', 
        contentType: "application/json; charset=utf-8", 
        data: { arXiv_id: $('#show_figures'+id_dummy).attr('data-id')}, 
        success: function(data) { 
         if(data.error){ 
          console.log("error = ", data.error) 
         } 
         else{ 
          document.getElementById(dummy_id).innerHTML = data.success 
         } 
        }, 
       }); 
      } 
      else{ 
       button.innerHTML = "<b>Hide figures</b>"; 
      } 
     } 
    } 
</script> 

的 「manage_figures」 功能是在叫我的燒瓶觀點功能的Python函數。但是讓我們假設它插入代碼看起來像這樣

<div id="0displayfigures" value="1" style="display: inline-block"> 
    <figure><a href="#"><img class="paper_img" src="/static/sourcefiles/image.png" alt="figure"/></a></figure> 
</div> 

我現在就想擁有它被觸發一個JavaScript函數,如果有人像

<script> 
    $(document).ready(function(){ 
     $('.paper_img').click(function(){ 

      console.log("test") 
     }); 
    }); 
</script> 

此功能的點擊永遠不會被觸發?這可能與頁面加載時不存在包含類pager_img的html代碼不存在的事實有關?有沒有人知道這個解決方案? 謝謝 carl

回答

1

由於您正在動態創建html元素,因此需要在添加html後註冊click事件處理程序。

$(document).on("click",".paper_img",function(){ 
     alert("test"); 
    });