使用jQuery延迟更改innerHTML文本

Wil*_*azi 3 html jquery delay fadein

所以我有一个非常简单的按钮,它基本上可以打开和关闭表单——我们将在我们的网站上使用它,因为我们正在进行更新,并希望在任何页面上提供反馈。这是我到目前为止的 jQuery:

<script>
// Toggle Button Text Change
$('#feedbackLink').hover(
    // Change HTML on mouseover
    function() {
        $(this).html('Send us a quick message!');
    },
    // Change back on mouseout
    function() {
        $(this).html('How can we improve this page?');
    }
);
// Toggle Button and Form
$('#feedbackLink').click(function() {
    // Hide feedback button
    $('#feedbackLink').toggle(500);
    // Display feedback form
    $('#feedbackForm').delay(501).toggle(250);
});
// Feedback Form
$('#cancel').click(function() {
    // Slides form from view when "CANCEL" is clicked
    $('#feedbackForm').toggle(500);
    // Fades original link back into view after a defined delay to allow for previous form to be hidden
    $('#feedbackLink').delay(501).toggle(75);
});
</script>
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何延迟或淡入 .hover 调用或 .html 交换?

谢谢您的帮助。

PS - 我知道代码可以进一步优化,我只是想让功能先工作 - 然后我回去浓缩我能做的。

Ror*_*san 6

您可以使用setTimeout()以下方法实现此目的:

var timeout;
$('#feedbackLink').hover(
    function() {
        clearTimeout(timeout);
        timeout = setTimeout(function() {
            $("#feedbackLink").html('Send us a quick message!');
        }, 2000); // change the HTML after 2 seconds
    },
    function() {
        clearTimeout(timeout);
        timeout = setTimeout(function() {
            $("#feedbackLink").html('How can we improve this page?');
        }, 2000); // change the HTML after 2 seconds
    }
);
Run Code Online (Sandbox Code Playgroud)

  • `delay` 仅适用于在元素上排队的操作 - 通常是由 `animate()` 方法创建的操作。更改 html 属性不会进入队列,因此不受 `delay` 影响。 (2认同)