【问题标题】:How to change text in jQuery and reset original text after 5 seconds如何在 jQuery 中更改文本并在 5 秒后重置原始文本
【发布时间】:2015-09-12 03:34:50
【问题描述】:

当用户单击该列表项时,我想将 ID 和标题为 Save 的列表项更改为 Saved。然后,5 秒后,我希望 Saved 恢复为 Save。我不关心它是如何变化的,无论是淡出还是其他。

我尝试使用setTimeout 失败。这是正确的做法吗?

【问题讨论】:

    标签: jquery settimeout


    【解决方案1】:

    你应该真正展示你迄今为止所做的尝试。也就是说,以下内容将满足您的需求:

    $('#save').click(function() {
      var $this = $(this);
      var originalText = $this.text();
      $this.text('Saved');
      setTimeout(function() {
        $this.text(originalText)
      }, 5000); 
    
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <ul>
      <li id="save">Save</li>
    </ul>

    【讨论】:

    • 嗨,很抱歉没有放代码,这是我第一次在这里发帖,不知道怎么写!无论如何,非常感谢!您的代码运行良好:)
    【解决方案2】:

    像这样简单的事情我更喜欢在纯 JS 中做,因为我喜欢通过在不需要时不调用 jQuery 函数来增加一点额外的速度。如果你喜欢,这里是一个普通的 JS 示例。

    document.getElementById('saved').addEventListener('click', function() {
        var self = this;
        self.textContent = 'Saved';
    
        setTimeout(function() {
            self.textContent = 'Save';
        }, 5000);
    });
    

    http://jsfiddle.net/0sdc5r9a/

    【讨论】:

    • 您的第一句话可能是没有反对意见的评论。无论哪种方式,我都编辑了帖子以删除变量。如果您要再次将其用于其他事件,缓存变量并没有错,但在这种情况下,如果不重新使用它,Delighted 是正确的。
    【解决方案3】:

    我已经写了一些代码,我认为它会帮助你解决你的问题,或者我猜你已经这样做了,因为这个问题是 6 年前的,就像哦,我的那太长了? 但我想它可能会帮助你?

    HTML 代码

    所以在这里创建一个下拉选择列表

    <p>Select Item</p>
      <select>
        <option>Laptop</option>
        <option>Mouse</option>
        <option>Keyboard</option>
        <option>Mobile</option>
        </select>
    <p id="pra">Save</p>
    

    JQuery 代码

    在此处创建一个函数,并在此函数中写入文本,因为当您单击时,您将获得浏览器或文档中显示的文本。并添加setTimeout(显然将在camelCased 中设置时间,并设置你想在多少次后做什么。

    $(document).ready(function(){
      $("#pra").on("click", function(){
       setTimeout(function(){$("#pra").html("Saved!"); });
       setTimeout(function(){$("#pra").html("Save"); }, 5000)
      });
    });
    

    希望它能帮助并解决您的问题:)

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案4】:

    您可以在更改文本时将原始文本与元素一起保留,以便在还原时不需要将其作为静态字符串。 代码如下:

    $('.list-item').on('click', function() {
        var itemEl = $(this);
            itemEl.data('originalText', $(this).html());
            itemEl.html('Saved');
    
            setTimeout(function() { 
                itemEl.html(itemEl.data('originalText')) }, 5000);
      }); 
    

    检查小提琴here

    【讨论】:

    • 这里没有理由使用数据属性。您可以简单地声明一个变量来保存文本本身,然后在 settimeout 函数中使用该变量,当它被触发时仍然可以访问它
    • 是的,这可以使用变量来实现,但我只是试图展示方式,因为当您更改函数中的按钮文本并将其恢复为原始文本时,有很多情况根据其他一些事件/动作,在不同的功能上。那么你将如何处理变量?而上述状态情况很常见。
    • 我很清楚,但您应该回答在考虑一般情况的情况下最好的解决方案是什么,对吧?
    • 当然,但是根据 OP 未说明或暗示的假设的未来可能需求添加完全无用和不必要的功能,不代表“最佳解决方案”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 2013-09-22
    • 2019-03-07
    • 2014-11-04
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多