我已經寫了一些jQuery函數,並且最近意識到我需要在其他情況下重用該代碼。我重構代碼接受選擇器作爲一個爭論,所以我現在可以使用案例1和案例2.但是,當我在document.ready
執行我的功能時,我得到奇怪的結果。將兩個不同的參數傳遞給函數
$(document).ready(function() {
imageCalc('.com-background > img');
setImageDims('.com-background > img', '#main-content');
imageCalc('.blog-entry-content iframe');
setImageDims('.blog-entry-content iframe', '#content');
});
需要注意的是,這些選擇器不會顯示在同一頁面上。另外,當我只運行一個imageCalc()
和setImageDims()
的實例時,這些函數都可以正常工作。這裏是有問題的功能..
function imageCalc(selector) {
var obj=$(selector);
$imgWidth = obj.width();
$imgHeight = obj.height();
$imgAspectRatio = $imgHeight/$imgWidth;
// $(selector).css('margin-left', function(calcMargin) { return parseInt($('.main-content').css('padding')) * -1 + "px"; }); fix for ie
obj.css('margin-left', '-10px');
}
function setImageDims(selector, content_area) {
var container = $(content_area);
$(selector).css('height', function() { return $imgAspectRatio * container.width(); });
$(selector).css('width', function() { return container.width() + 20; });
}
總之,所有的代碼工作得很好,當我只有每個document.ready
只調用一次函數,但我需要使用此代碼爲2分的情況,我該怎麼做這個?
你能否加入演示顯示那些「奇怪的結果」? – Oriol 2014-10-09 19:32:37
你在哪裏聲明變量$ imgWidth,$ imgHeight和$ imgAspectRatio?你能給出完整的代碼示例嗎? – 2014-10-09 19:33:29