2009-08-10 43 views
1

我有一个加载圆角div的页面。并且在每个div(包括所有内部div,跨度在这个div内)我都会调用许多与它们相关的事件。现在我面临的问题是加载时间。当我将鼠标移到主div上时,我们是否有任何方法可以首先在“ready”函数中加载用于圆角的脚本并动态地加载其余事件?任何减少我的加载​​时间的方法都会很有帮助!如何在jQuery中以编程方式触发事件?

例子:

$(function(){ 
    $('.inner').corner({ 
     tl: { radius: 6 }, 
     tr: { radius: 6 }, 
     bl: { radius: 6 }, 
     br: { radius: 6 } 
    }); 

    // loadDivEvents() in this we call the rest of the events upon 
    // mouseover or any other event without multiple calls 

}); 

function loadDivEvents(){ 
    //this may have many events/ajax calls 
} 
+1

你能举一些例子代码吗? – 2009-08-10 13:54:12

回答

0

我用图像而不是div来解决这个问题。我发现它是解决这个问题的最好方法。

0

什么是带负载时的实际问题,如果我可以问吗?

第一次加载页面时,任何与事件相关的函数(通常)只会绑定到页面中的元素,以便在事件发生时和事件相关函数执行。所以我不知道这是否会真正影响您的网页加载时间。

什么会影响您的页面加载时间,因为您正在尝试在页面加载时一次关联一个与事件相关的函数。例如,如果我有10个列表,并且每个列表都有10个列表项,并且我希望列表项中的任何项在悬停时都变成绿色 - 如果我的JavaScript分别定义了这100个事件中的每一个,那么可能会增加我的开销。

但是!

如果我将这些事件的绑定移动到页面加载后发生,当我第一次将鼠标移到主div(或窗口,或任何几乎总是会发生的事件)上时,会发生这种情况,传递给THAT事件。该页面已加载,但现在它在处理事件时被冻结。我的用户真的很烦,因为他无法向下滚动,如果问题很严重,他无法关闭页面或切换到另一个窗口。他期待这一点,当页面被永久加载时,现在只是这种随机的冻结总是发生在他去你的页面时。

所以,如果有页面加载问题,更好的解决方案可能是找出是否有冗余或不必要的功能运行。在上面给出的例子中,我可以简单地说:“当任何列表项目被挖空时,它们变成紫色”,这是一个绑定,而不是100个。或者我可能犯了一个简单的错误,就是让这100个绑定中的每一个实际上做了某事比如检查列表项的值),它只是在触发事件后才需要做的事情,而不是在页面加载期间。这将是100个摊位,我甚至不希望在页面加载时发生一次。

+0

是的,你是对的...正如你所说,页面加载主要取决于“冗余或不必要的功能运行”。我试图优化代码。主要的加载时间是由于我正在使用的圆角脚本。但我只是想知道是否有办法做这样的事情(在准备好的功能中只有少量事件,而当我将鼠标悬停在特定的div上时会触发事件的剩余部分)。无论如何感谢您的答案。 – kayteen 2009-08-10 14:43:56

+0

我不确定它是否会有所帮助,但是您是否尝试过模块化脚本的两个部分?一个js文件中的弯曲角落和另一个js文件中的事件?看看你有没有运气可能会先把另一个放在一起?你正在使用什么圆角的脚本?在过去的一年里,我一直都没有得到任何好运,但是我还是没有得到好运。你是否尝试过使用CSS(-moz-border-radius)做圆角转角来确认页面加载得很好,并且在删除圆角脚本时看起来正确? – Anthony 2009-08-10 18:49:30

+0

我试过模块化...但它仍然是一样的。 即将到来的“与CSS(-moz-border-radius)圆角”这只适用于Mozilla ...但有没有办法让它在IE中工作? 现在我正在使用这个,http://blue-anvil.com/archives/anti-aliased-round-corners-with-jquery 这个脚本需要我很多时间。 – kayteen 2009-08-11 04:47:46

相关问题