Jquery hide()函数在需要时不隐藏图像

Jquery hide()函数在需要时不隐藏图像,jquery,hide,Jquery,Hide,因此,我想先隐藏幻灯片,然后做所有其他事情,最后-显示幻灯片 但是,很明显,在单击“下一步”按钮后,程序会等待一些东西,可能会执行其余的代码,然后,在最后,只是快速隐藏并显示幻灯片,这并不是它的意图 您可以看到这可能会有所帮助。。不确定这是否是你想要的 $('#slide').show(); $(“#幻灯片”).hide(); 如果(n

因此,我想先隐藏幻灯片,然后做所有其他事情,最后-显示幻灯片

但是,很明显,在单击“下一步”按钮后,程序会等待一些东西,可能会执行其余的代码,然后,在最后,只是快速隐藏并显示幻灯片,这并不是它的意图


您可以看到这可能会有所帮助。。不确定这是否是你想要的

$('#slide').show();   
$(“#幻灯片”).hide();
如果(n
这可能会有所帮助。。不确定这是否是你想要的

$('#slide').show();   
$(“#幻灯片”).hide();
如果(n
我想我明白了:您处理的最长部分是请求获取新图像,我想,为此,您使用jQuery Ajax查询,不是吗

我认为您的Ajax查询是异步的,因此在加载新图片之前,会对旧图片调用show()。这给你一种画面永远不会被隐藏的感觉。要解决此问题,请同步ajax请求:

  $('#slide').hide();
        if (n < xlen) {n+=1;}
        else {n=0};
        change();
        border();
    setTimeout(function() { $("#slide").show(); }, 5000);

我想我明白了:您处理的最长部分是请求获取新图像,我想,为此,您使用jQuery Ajax查询,不是吗

我认为您的Ajax查询是异步的,因此在加载新图片之前,会对旧图片调用show()。这给你一种画面永远不会被隐藏的感觉。要解决此问题,请同步ajax请求:

  $('#slide').hide();
        if (n < xlen) {n+=1;}
        else {n=0};
        change();
        border();
    setTimeout(function() { $("#slide").show(); }, 5000);
你这样做:

$.ajax({
  ...,
  async: false
})
你这样做:

$.ajax({
  ...,
  async: false
})


您的代码非常简单,并且在毫秒内执行,因此您永远不会看到隐藏/显示。你看到的是新的图像加载,仅此而已。你的代码相当简单,在毫秒内执行,因此你永远不会看到隐藏/显示。你看到的是新图像加载,仅此而已。所以隐藏图像,然后等待五秒钟,然后隐藏图像。这是有道理的,至少对那些投票支持它的人来说是这样的?这不是一个解决这个问题的优雅方式。如果有人有一个木制连接,他不会看到图片隐藏本身。因此,现在我们等待五秒钟,然后显示图像,很棒。@adeneo我猜这是一个tipo,图像将在5秒后显示。请隐藏图像,然后等待五秒钟,然后隐藏图像。这是有道理的,至少对那些投票支持它的人来说是这样的?这不是一个解决这个问题的优雅方式。如果有人有一个木制连接,他不会看到图片本身隐藏。所以现在我们等待五秒钟,然后显示图像,很棒的UX。@adeneo我想这是一个tipo,图像将在5秒后显示。你可能应该再次发布。Ricola3D,你正确地描述了问题,但我没有使用ajax。我使用jquery来更改img src属性。如果不使用AJAX,那么问题的描述就不太准确:)好的。请给我们看一下用于更改src并重新加载的代码好吗?所以我们可以看到如何强制jQuery同步执行它?无论如何,添加一个console.log(“foo”);在显示时,打开web浏览器控制台,查看图像加载之前或之后是否显示“foo”(获取状态为200的请求)。这将告诉我们我的分析是否接近真实问题:)我在这里读到了一些有趣的东西:。您可以使用one()添加一个回调,该回调在“load”事件上只工作一次。在这个回调中,您可以在加载图像后放置所有处理(例如show()调用),您可能应该再次发布。Ricola3D,您正确地描述了问题,但我不使用ajax。我使用jquery来更改img src属性。如果不使用AJAX,那么问题的描述就不太准确:)好的。请给我们看一下用于更改src并重新加载的代码好吗?所以我们可以看到如何强制jQuery同步执行它?无论如何,添加一个console.log(“foo”);在显示时,打开web浏览器控制台,查看图像加载之前或之后是否显示“foo”(获取状态为200的请求)。这将告诉我们我的分析是否接近真实问题:)我在这里读到了一些有趣的东西:。您可以使用one()添加一个回调,该回调在“load”事件上只工作一次。在这个回调中,您可以在加载图像(例如show()调用)adeneo后放置所有处理,我会尝试,尽管我不理解您的代码。谢谢。one('load',function(){})添加一个回调函数,该回调函数只对“load”事件起作用一次。因此,每次更改源时,都要添加它。这将确保每次加载更改的图像时图像都会再次显示Deneo,我会尝试,尽管我不理解您的代码。谢谢。one('load',function(){})添加一个回调函数,该回调函数只对“load”事件起作用一次。因此,每次更改源时,都要添加它。这将确保每次加载更改的图像时,图像都会再次显示