2013-01-24 75 views
1

這涉及到我剛纔的問題,其中HTML所在位置:Grouping siblings into a div功能啓動時加載圖片

我發現很難解釋什麼,我試圖完成的,所以我制定了一個快速的線框表示:

Desired Results Wireframe

我發現了一個不同的解決方案,從分組內容和獲取所需的視覺。圖像被保存在錨標籤中,因此我使用jQuery在頁面上找到最高的img,並將該高度應用於包含標籤。因此,不是垂直對齊底部,而是將固定高度設置爲內容,而是將內容垂直對齊,將最大高度設置爲錨標籤,並將該標記中的圖像垂直對齊到底部。

Max Height TD

var maxHeight = 0; 

$('.Product img').each(function() { 
    maxHeight = Math.max(maxHeight, $(this).height()); }) 

$('.ProductThumbnail').css({"height":maxHeight}); 

代碼工作完美。但是,某些類別有幾個頁面,當您選擇「下一頁」鏈接時,電子商務解決方案使用jQuery動態加載頁面,並且代碼中斷。

所以,我的問題是「每當圖像加載到頁面上時,如何獲得上面列出的onLoad函數?」

[注1:]我已經嘗試使用imagesloaded by desandro,它並沒有像我希望的那樣工作。

[注2:]我也希望maxHeight能夠匹配每行,而不是整個頁面,因爲TD的內容保存在TR中。

[注3:]我根本無法修改html。我只允許向頭部,自定義標題和自定義頁腳製作附錄。 內容不可編輯。

回答

1
你的情況

你應該或必須使用此功能

$('img').ready(function(){ 
    console.log('image is loaded'); 


}) 

如果元素被加載,然後瓶坯功能就會看到...

這裏有一個例子

jsfiddel

+0

當應用我有以下錯誤:「未捕獲的ReferenceError:IMG沒有定義」 [編輯]:等待實現$(IMG)是缺少「」可是,當我加入它的代碼打破。 – Ben

+0

請參閱編輯 –

+0

此功能可以在不詢問圖像的URL的情況下工作嗎?這是一個電子商務解決方案,因此它從1000個物品的庫存中加載圖像/信息。我也不確定你的編輯的第二部分是什麼意思? – Ben

1

您可以將代表附加到每個tr(每當孩子img起火災ready事件)是重新計算該行的高度:

$("table#tableId tr").on("ready", "img", function(){ 
     var maxHeight = 0; 

     $(this).find('.Product img').each(function() { 
      maxHeight = Math.max(maxHeight, $(this).height()); }) 

     $(this).find('.ProductThumbnail').css({"height":maxHeight}); 
    }) 
}); 

ETA: 該代碼使用live()方法委派事件。使用這種方法,您可以將事件綁定到尚不存在的元素。請注意,live()已棄用,應使用on(),但要委託on()您需要一個未替換的父元素。

$("table#tableId img").live("ready", function(){ 
     var maxHeight = 0; 
     var $row = $(this).parents("tr"); 
     $row.find('img').each(function() { 
      maxHeight = Math.max(maxHeight, $(this).height()); }) 

     $row.find('.ProductThumbnail').css({"height":maxHeight}); 
    }) 
}); 
+0

當應用時,我得到以下錯誤:「未捕獲TypeError:對象#沒有方法''' 此外,這可以用於類而不是ID?我正在使用電子商務解決方案,因此它會隨機生成各行的ID,並且對於每行都要重寫此代碼並不合時宜。 – Ben

+0

是的,你可以使用任何選擇器。 'on()'方法在1.7中引入jQuery:http://api.jquery.com/on/ – Malk

+0

hm ..電子商務解決方案有一個較老的版本,但我只是鏈接到最新版本以及添加「 「,一個用於舊版本,所以它們不會發生衝突,代碼仍然不起作用。沒有錯誤。 :\ [編輯:]等等..我一定沒有做到這一點,因爲舊代碼無法正常工作。 – Ben