2014-06-20 78 views
0

我正在使用一个jQuery扩展,它提供自定义滚动条。通常它会被这样调用:当页面加载后出现元素时调用jQuery函数

$("#thoughtsArticle #recentPosts").mCustomScrollbar(); 

但是在这种情况下,当页面加载时,需要影响的元素不存在。它显示为用户输入的结果。当元素出现在页面上时,如何执行这个jQuery?

从谷歌搜索我已经知道我需要使用委托事件,但我还没有找到任何可以直接应用于我的案例。大多数的例子是像提交表单等事件

编辑:

我不认为我已经解释正确就是我要找的。如果你看看我的webpage here,当页面加载时,'blog'部分不存在。如果您点击导航栏中的我的博客,它将只使用AJAX重新加载页面的一部分。您会在博客部分看到右侧有一个Recent Posts块。我想将自定义滚动条应用于该部分。

我上面发布的代码当前是$(document).ready()脚本中的其余jQuery,但由于目标元素在页面加载时不存在,因此自定义滚动条不适用。

我试过在上面的jQuery的博客页面上放一个<script>标签,它似乎没有任何效果。

我在网上搜索了一下,我想我需要使用的是一个委托事件?不知道,但无论哪种方式,我不知道如何在这种情况下使用,因为没有任何我能找到的例子似乎适用于我的情况。

+0

分享一些你用html试过的代码。 –

+3

追加所需元素后执行您的代码行。 –

+0

页面加载后,基本上文档已准备就绪。一旦你准备好DOM,你可以简单地在'$('document')。ready(function(){})上调用它;' – Murtaza

回答

0

当文档完全加载时,此脚本将会触发。然后,它将在文档中添加代表.mCustomScrollbar();我有点担心在这一点后,它会启动“准备好”,但您可以尝试其他生命周期事件,或者立即应用它,因为它很可能是您的文档准备好后,控件已经在页面上。

$(function(){ 
    $(document).on('ready','#thoughtsArticle #recentPosts',function(){ 
     $(this).mCustomScrollbar(); 
    }) 
}) 
+0

我试过你的代码,但不幸的是我无法让它工作。我不知道我是否把它放在了正确的位置。我已经在我的索引页上放置了* $('document').ready(function(){}); *以及其余的jQuery。如果问题不多,你能否检查我的网页的源代码以查看我是否已正确实施它? – Juicy

+0

我试过在你的代码中加入一个提醒('test')来检查。它似乎永远不会被调用,所以问题不在于滚动条扩展。 – Juicy

+0

'$(function(){'是文档准备的快捷方式,只是要求在将JQuery添加到文档的底部之前添加JQuery,并且应该这样做。确实可能需要调整的部分是$(document ).on('ready'')您可能需要将控件添加到页面时更改准备好的其他内容。 –

相关问题