2011-12-18 164 views
2

我有两个JavaScript函数,我想从jQuery函数内部调用。由于我动态加载图像,我想通过调用两个函数func1()func2()来检查每个图像的宽度,以检查宽度。在jQuery函数中调用JavaScript函数?

If width < 20px then double width

我不想等待图像完全加载,然后做检查。

我试过,但没有奏效

$(document).ready(function() 
{ 
    $('img').each(function() 
    { 
     .... 
    }) 

    func1(); 
    func2(); 
}) 

function func1() 
{ 
    .... 
} 

function func2() 
{ 
    .... 
} 

我缺少什么?

+4

准备好/每次调用后的分号。浏览器错误控制台显示什么? – tvanfosson 2011-12-18 13:56:46

+0

DOM准备就绪后,此代码将调用func1()和func2()。你想要做什么? – 2011-12-18 13:57:22

+1

'$('body')。每个都有点奇怪 - 你只有一个身体。 – pimvdb 2011-12-18 13:57:46

回答

0

。我认为你必须将你的函数移动到jquery块中。

$(document).ready(function() { 
    function1() { 
     ...  
    } 
    function2() { 
     ... 
    } 
}); 

否则,我不认为他们可以从jQuery内部调用。测试它并通知我结果。

+2

无需放入jQuery块。总是建议放在文档准备好的事件之外。否则功能仅在页面加载后进行评估。这会增加页面加载时间 – 2011-12-18 14:34:21

+0

谢谢Chamika。我会尝试你所说的。 – 2011-12-18 14:40:33

0

你可以改变这一点:

$(document).ready(function() 

这样:

$(window).load(function() 

,以确保所有图像加载。


另一种选择是load处理程序绑定到图像本身,但如果图像缓存可能会有问题。

$('img').load(function() { 
    func1(); 
    func2(); 
}); 

你应该注意,这将调用函数一次为每个图像,这可能意味着你需要改变的功能是如何工作的。就像他们接受个人形象作为论据一样。

+0

:(使用的效果与'window.onload = messWH;'效果相同,不是我想要的,猜猜它就像epignosisx所说的那样,但是嘿谢谢 – Shepherd 2011-12-18 15:02:52

+0

谁投下了这个,给个理由。 – RightSaidFred 2011-12-18 17:07:55