javascript
  • jquery
  • html
  • 2014-12-29 111 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

    相關問題