javascript
  • jquery
  • html
  • 2014-12-29 52 views 0 likes 
    0

    我使用此功能将图像添加到一个div元素添加如何引用元素:的jQuery .append()

    function pasteImages(url,id) { 
    
        jQuery("#photodiv").append("<div id='photoid"+ id +"'>") 
        jQuery("#photodiv").append("<img src=" + url + " height='140' width='140'>"); 
        jQuery("#photodiv").append("<button type='button' onclick='deleteImage("+ id + ");'>Verwijderen</button>"); 
        jQuery("#photodiv").append("</div>"); 
    } 
    

    URL和id属性使用AJAX调用检索。该按钮调用一个函数删除的图像(后的图像被成功地从数据库中删除)

    图像被成功删除了更迭之后:函数被调用:

    .......success: function(data) // A function to be called if request succeeds 
          { 
           var photoarray = JSON.parse(data); 
    
           var photoid2remove = "#photoid" + photoarray[0].photoid; 
           jQuery(photoid2remove).empty(); 
          } 
    

    一切工作正常,但没有被删除。我试过一个静态的ID或类,但它没有做任何事情。当我检查源时,我无法在任何地方找到附加的div。那么我怎样才能引用我用第一个函数添加的div?

    任何线索?

    +1

    检查源或检查元素?因为这两者会给出不同的结果。 – Maxzeroedge

    +0

    你有链接或jsfiddle我们可以玩吗? – yochannah

    +0

    你确定'data'包含你所期望的,并且'photoid2remove'完全匹配原来添加的ID吗? –

    回答

    4

    append调用中未封闭的HTML标签会自动给出关闭标签。因此,代码

    jQuery("#photodiv").append("<div id='photoid"+ id +"'>") 
    

    相同

    jQuery("#photodiv").append("<div id='photoid"+ id +"'></div>") 
    

    因此,你的<img><button>被附加到#photodiv元素,而不是新创建<div>。删除<div>不会删除其他元素,因为它们不在<div>中。

    必须要么把所有的HTML到一个单一的append电话,或使用jQuery函数创建元素,并呼吁那些append

    var newDiv = jQuery("<div>", { id: "photoid"+ id }); 
    var newImg = jQuery("<img>", { src:url, height:140, width:140 }); 
    var newButton = jQuery("<button>", { type:'button', text: "Verwijderen", onclick: "deleteImage("+ id + ");" }); 
    
    newDiv.append(newImg); 
    newDiv.append(newButton); 
    
    jQuery("#photodiv").append(newDiv); 
    
    +0

    它的工作原理!很好的解释。读完你的答案后,我明白了。我将一切都添加到photodiv而不是新创建的div ....仍然有一个问题,为什么不是源更新客户端。添加图像和按钮后,它不显示在源中? – Michiel

    +0

    浏览器中的“查看源代码”显示了作为页面加载时间发送到您的页面的源代码。具有“检查元素”功能的开发人员工具(出现在几乎所有现代桌面浏览器的右键单击菜单中)都会向您显示DOM当前存在的HTML样式表示。 – apsillers

    +0

    我正在使用Safari Developer插件并显示控制台打印,但是当我查看源代码时,photodiv保持空白。但是当我使用信息检查时,我可以选择新添加的div,我可以看到实际的元素。学到了另一件事! – Michiel

    相关问题