javascript Jquery改变.text(一些东西)然后带回来

pw9qyyiw  于 2023-01-04  发布在  Java
关注(0)|答案(8)|浏览(101)

如果我有下面的代码:
超文本标记语言

<div class ="lg"> <img src="/images/images.gif"> </div>

javascript语言

$('.lg').text("Correct");

jquery将删除图像并替换为“Correct”。这只是为了在我需要图像重新出现之前有一个延迟。所以它将 Flink correct,然后带回原始图像。

fd3cxomn

fd3cxomn1#

在我看来,实现这一点的一个更干净的方法是对图像和文本使用不同的类,并分别隐藏/显示它们:
CSS:

​.text {
    display: none;
}​

超文本:

<div class="lg">
    <div class="image">IMAGE</div>
    <div class="text">Correct</div>
</div>​​​​​​​​​​​​​​​

JavaScript(在单击事件或其他事件上):

$(".lg .image").hide();
​​​​​​​​$(".lg .text").show();

setTimeout(function() {
    $(".lg .image").show();
    $(".lg .text").hide();
}, 1000);​​​​​​​
wfsdck30

wfsdck302#

您需要存储旧内容,然后:

var oldhtml = $('.lg').html(); 
// WARNING: will give unexpected results if .lg matches more than one element
$('.lg').text("Correct");
setTimeout(function(){
    $('.lg').html(oldhtml);
}, 1000); // milliseconds

如果lg类有多个条目,则需要一个循环:

$('.lg').each(function() {
    var oldhtml = $(this).html(); 
    $(this).text("Correct");
    setTimeout(function(){
        $(this).html(oldhtml);
    }, 1000); // milliseconds
});
5ktev3wc

5ktev3wc3#

你可以试试这样的。

<div class ="lg"> 
      <img src="/images/images.gif"> 
      <span style="display:none;">correct</span> 
</div>

JS系统
显示Correct文本

$('.lg').find('img').fadeOut();
$('.lg').find("span").fadeIn();

显示图像的步骤

$('.lg').find('img').fadeIn();
$('.lg').find("span").fadeOut();

最后你的代码可以是这样的。

$('.lg').find('img').fadeOut();
$('.lg').find("span").fadeIn();
setTimeout(function(){
     $('.lg').find('img').fadeIn();
     $('.lg').find("span").fadeOut();
}, 2000);//delay of 2 secs
dtcbnfnu

dtcbnfnu4#

我建议不要翻转div的html,而是将“Correct”标签和图像都放在div中,然后将它们切换为开和关:

<div class="lg">
    <span id="correctSpan">Correct!</span>
    <img id="image" src="/images/images.gif">
</div>

$(document).ready(function () {
    // hide the correctSpan from the start
    $('#correctSpan').toggle();
});

// in the event handler that toggles the two...
$('#correctSpan, #image').toggle();
ecr0jaav

ecr0jaav5#

您需要将图像(原始文本)保存在字符串中,更改它,然后再将其更改回来。

var orig = $('.lg').html(); // This should be .html, not .text
                            // so that it saves the <img/> tag
$('.lg').text('Correct');
// After a delay
setTimeout(function(){
    $('.lg').html(orig);  // Use .html here, so that the <img/> tag will work
}, 1000);

不过,有一个更好的方法可以做到这一点。有一个写有“正确”的span,然后只隐藏/显示图像和文本。

<div class="lg">
    <img src="/images/images.gif" />
    <span style="display:none;">Correct</span>
</div>

然后在JS中:

$('.lg').find('img,span').toggle(); // This will hide the image and show the text
                                   // run it again to change it back
gk7wooem

gk7wooem6#

不如这样:
CSS:

.hidden { display:none; }

超文本:

<div class="lg">
    <img src="/images/images.gif">
    <span class="hidden">Correct</span>
</div>

联森:

$(".lg").find("img, span").fadeToggle();
xxls0lw8

xxls0lw87#

下面是代码!根据您的情况使用此代码!我在这里创建了一个单击事件,但如果您想直接显示文本,只需将此代码粘贴到一个函数中,然后调用您的函数!

$('.click_button').on('click', function() {

    $(".lg img").css('display', 'none');
    $(".lg .message").text("Correct!");

    
    if ($('.lg .message').text() == 'Correct!') {
      function bringback() {
        $(".lg img").css('display', 'block');
        $(".lg .message").text('');
      }
        setTimeout(bringback, 1000);
    }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class ="lg"> 
        <img src="https://play-lh.googleusercontent.com/1-hPxafOxdYpYZEOKzNIkSP43HXCNftVJVttoo4ucl7rsMASXW3Xr6GlXURCubE1tA=w3840-h2160-rw" style="width: 150px;"> 
        <div class="message"></div>
</div>

<button type="button" class="click_button">Click</button>
4dc9hkyq

4dc9hkyq8#

所以你必须用timeout来做另一个改变,因为这个改变实际上替换了dom中的对象。

相关问题