如何在“X”秒后进行 jquery 函数调用

Posted

技术标签:

【中文标题】如何在“X”秒后进行 jquery 函数调用【英文标题】:How to make a jquery function call after "X" seconds 【发布时间】:2012-01-03 05:20:17 【问题描述】:

我有一个 jquery 函数,我需要在 iframe 中打开网站后调用它。

我正在尝试在 iframe 中打开一个网络链接,打开它后我需要调用以下函数。 那我该怎么做呢?

这是我的功能:

<script type="text/javascript">
       $(document).ready(function()
           $("#<%=Button1.ClientID%>").click(function (event) 

            $('#<%=TextBox1.ClientID%>').change(function () 
                $('#various3').attr('href', $(this).val());
            );
            $("#<%=Button2.ClientID%>").click();
        );
      )
    function showStickySuccessToast() 
        $().toastmessage('showToast', 
            text: 'Finished Processing!',
            sticky: false,
            position: 'middle-center',
            type: 'success',
            closeText: '',
            close: function () 

            
        );
    

    </script>

这是我在 IFrame 中打开链接的按钮:

<a id="various3" href="#"><asp:Button ID="Button1" 
runat="server" Text="Button" OnClientClick="Button2_Click"/></a>

实际上这是我拥有的简单页面:

这就是信息

【问题讨论】:

你不能只使用 onclick 处理程序吗?我的意思是,如果 iframe 加载 onclick,你不能将函数也设置为运行 onclick 吗? 是的,我可以,但它只会同时闪烁它们。 看起来您正在使用 aspx ()。如果是这样,您也应该将问题标记为 aspx。 没问题,感谢您提供的信息,我已对其进行了纠正,现在可以正常使用了。 【参考方案1】:

你可以在 JavaScript 中使用普通的 setTimeout 方法。

即...

setTimeout( function() 
    // Do something after 1 second 
    , 1000 );

在您的示例中,您可能希望直接使用showStickySuccessToast

【讨论】:

首先感谢您的回复,如果我这样做了,虽然我已将时间间隔设置为 9 秒,但它只会同时闪烁它们。 @Stein G. Strindhaug-Iframe 以及消息。 @user944919 那么你用来选择效果元素的任何css类都可能匹配这两个元素...... 如果你需要一个明确的超时时间,你应该定义 var 到 setTimeout 并把这个代码: clearTimeout(timer); 啊哈...这对我来说似乎很简单。【参考方案2】:

如果您可以显示实际页面,我们可能会为您提供更好的帮助。

如果您只想在 iframe 加载后触发按钮,您可以 想检查它是否已加载或使用 iframe.onload:

<iframe .... onload='buttonWhatever(); '></iframe>


<script type="text/javascript">

    function buttonWhatever() 
        $("#<%=Button1.ClientID%>").click(function (event) 
            $('#<%=TextBox1.ClientID%>').change(function () 
                $('#various3').attr('href', $(this).val());
            );
            $("#<%=Button2.ClientID%>").click();
        );

        function showStickySuccessToast() 
            $().toastmessage('showToast', 
                text: 'Finished Processing!',
                sticky: false,
                position: 'middle-center',
                type: 'success',
                closeText: '',
                close: function ()  
            );
        
    

</script>

【讨论】:

我已经更新了我的问题,您可以了解我的意思!而且我正在使用 fancybox Iframe 来显示网页。 我不太了解与框架交互,但我会冒险:如何将点击功能更改为 $('#iframeID').child('#button').click() ? 实际上我通过给按钮设置超时而不是函数作为 var timer = setTimeout(function () $("#").click( ); , 9000);并且工作正常。无论如何感谢您的宝贵回答,我会尝试您的建议。 你的回答也是最好的,但我没有使用普通的 Iframe,所以这也是一个不错的选择,将这些普通的 Iframe 与 Asp.Net 一起使用。 +1,因为你为我做了这么多尝试,给了我新的思考方式。【参考方案3】:

试试这个

setTimeout( function() 
    // call after 5 second 
    , 5000 );

【讨论】:

请说明它与接受的答案有何不同,以及为什么这样可以解决问题,这将真正有助于提高您的帖子质量,并可能导致更多的赞成票。 另外,我们不要忘记这是一个将近 8 年的问题,已经回答了,并且有一个公认的答案。另外,这个答案真的很差,没有解释任何东西,或者贡献了任何新的东西(重复),---好吧,再读一遍第一句话。

以上是关于如何在“X”秒后进行 jquery 函数调用的主要内容,如果未能解决你的问题,请参考以下文章

调用以变量命名的 jQuery 函数

Golang回调函数实例二则

使用 jquery 在 X 秒后隐藏/删除标签

x 秒后在两个功能之间切换

如何等待未知调用者调用函数?

jquery的touch函数怎么用