为什么在一个js文件中创建的函数在调用时甚至在另一个js文件中创建时都不起作用?

时间:2011-10-09 19:02:17

标签: javascript jquery variables

我真的希望有人可以解释我为什么会遇到错误。 我怀疑我不理解一些基本的东西,并希望我能在这里学到一些东西。

你可以看到它在这里不起作用:http://syndex.me

  

我已经评论了脚本的相关部分,以便于使用   找到。

我有一个图像大小调整脚本,如果图像大于窗口,则会降低图像的高度。它适用于最初加载的任何图像,但不是我的无限滚动脚本带来的新加载的帖子 - > http://marckremers.com/syndex/js/jquery.syndex.js

它使用“.each”并在其中,“。load” “.load”不会冒出DOM结构,因此我无法将其绑定到“.live”或“.delegate”事件。

所以我的下一步是尝试直接在无限滚动脚本中再次启动此功能。当然那会有意义吗?该脚本位于http://marckremers.com/syndex/js/jquery.infinitescrollfortumblr.js

如果我从jquery.syndex.js复制并粘贴工作脚本,我在错误后得到错误,就像我说的是另一种语言。代码本身不是我的,它使用非常抽象的变量来描述所有内容。

如何调整图像大小调整功能以在infinitescrollfortumblr.js中工作?

2 个答案:

答案 0 :(得分:0)

您的函数不能跨脚本运行,因为它们已经在闭包中创建了,因此只能在该闭包的范围内可见。

使用window.funcname = function() { ... }将它们放在全局范围(bleuch)中,或者为它们创建自己的命名空间对象:

NAMESPACE = NAMESPACE || {};
NAMESPACE.myfunc = function() { ... };

答案 1 :(得分:0)

返回库存无限滚动脚本,然后将调整大小脚本放入其回调中:

$(elem).infinitescroll(options,function(){
  // your resize code
});