douzhi19900102 2012-07-10 00:21
浏览 20
已采纳

如何在更新后刷新特定图像?

I have several div tags with unique ids and after a click event for a specific image I'm trying to refresh it. How can I do this? This is what I have for code so far:

HTML:

<div class="photo_gallery_container" <?php echo($div_id); ?>>
    <table class="table table-bordered table-condensed">
        <thead >
            <tr style="background-color: #f5f5f5;">
                <th colspan="2" style="text-align: right;"><span style="cursor:pointer" id="delimg_<?php echo($id); ?>" class="delimg"><span class="label label-important">Delete</span></span></th>
            </tr>               
        </thead>
        <tbody>
            <tr>
                <td>
                    <img src="<?php echo($url['url'])?>" style="height:120px;"/>
                </td>
                <td>
                    <a href="#" id="rotateimg_<?php echo($id); ?>" class="rotateimg">Rotate</a>
                </td>
            </tr>
        </tbody>
    </table>
</div>

My click event for rotate looks like this:

$('.rotateimg').click(function(e) {
    e.preventDefault();
    var id = $(this).attr('id').substr(10);

    $.post("/functions/photo_functions.php", { f: 'rotate', imgid: id }, function(status){

        if (status == 'true') {

            // How can I reload the specific image after being rotated

        }
    });

});            
  • 写回答

2条回答 默认 最新

  • duanhe0817825 2012-07-10 00:23
    关注

    Just append a query string to the img's URL (e.g. ?v=1), which will fool the browser into thinking that it's a new image.

    Here's an example (assuming id is the id of the image on the page):

    $('#' + id).prop('src', function(i, v)
    {
        var separator = v.indexOf('?') == -1 ? '?' : '&';
    
        return v + separator + 'v=' + ( new Date() ).getTime();
    });
    

    Since it appears your img on the page has no ID, you could traverse the DOM to find it, like so:

    $(this).parent().prev().find('> img')
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • doutao6653 2012-07-10 00:30
    关注

    How about a plugin?

    $.fn.refresh(function() {
      return this.each(function() {
        var $this = $(this);
        var source = $this.data('orig-src');
        var timestamp = (new Date()).getTime();
    
        if (!source) {
          $this.data('orig-src', $this.prop('src'));
          source = $this.data('orig-src');
        }
    
        if (source.indexOf('?') != -1) {
          $this.prop('src', source + '&t=' + timestamp)
        } else {
          $this.prop('src', source + '?t=' + timestamp)
        }
      });
    });
    

    Now you can call it on a <img /> tag:

    $('img.foo').refresh();
    
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 频率与占空比均可调的方波发生器
  • ¥15 VB6.0中PICTUREBOX加载本地图片无法显示
  • ¥100 关于游戏app session获取的问题
  • ¥15 MYSQL数据库建表
  • ¥15 爬虫程序爬取TTGChina网站文章代码
  • ¥35 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。
  • ¥15 如何用下图方法在AMESim中搭建离心泵模型
  • ¥15 C#连接服务器,请求时报Ssl/Tsl未能建立安全通道
  • ¥15 xcode15build的c++ dylib在10.15上不兼容
  • ¥15 CPLD如何实现在线逻辑分析