我已经写了一些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