2015-11-13 140 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"); 
    });