2017-07-13 179 views
0

在管理员网页中,我有一个包含许多项目的列表,每个项目中都有一个按钮,允许为最终用户显示或隐藏这些项目。当物品显示时,该按钮是睁开眼睛的图像。当图像隐藏时,该按钮是闭合眼睛的图像。怎么运行的?例如,在隐藏项目中,该按钮是闭上眼睛的图像。所以,当我点击按钮显示日期项目时,该项目将显示给用户,并且图像变化为睁开的眼睛。在ajax调用后更改src图像

我为此使用ajax + jquery。

问题是当我点击按钮来显示或隐藏一个项目,图像和他的属性不会改变! ajax正在工作,但图像按钮不会改变。

阿贾克斯:

$(document).on('click', '#UpdatePreview', function(e){ 

    e.preventDefault(); 

    var uid = $(this).attr('name'); 
    var eye = $(this).children('#imgEye').attr('name'); 

    $.ajax({ 
     url: 'previewLeiame.php', 
     type: 'POST', 
     data: {id: uid}, 
     dataType: 'html', 
     success: function(data) { 
      if(eye == "visualized") { 
       $(this).children('#imgEye').attr('src', '../imgs/btn/no-eye-icon.png'); 
       $(this).children('#imgEye').attr('name', 'hidden'); 
       $(this).children('#imgEye').attr('title', 'Hidden'); 
      } else if(eye == "hidden") { 
       $(this).children('#imgEye').attr('src', '../imgs/btn/eye-icon.png'); 
       $(this).children('#imgEye').attr('name', 'visualized'); 
       $(this).children('#imgEye').attr('title', 'Visualized'); 
      } 
     } 
    }); 

}); 

HTML:

<td width="35" align="center"> 
    <?php 
     if($data['preview'] == 0) { 
    ?> 
      <a id="UpdatePreview" name="<?php echo $data['id']; ?>"><img id="imgEye" name="hidden" title="Hidden" src="../imgs/btn/no-eye-icon.png" /></a> 
    <?php 
     } else { ?> 
      <a id="UpdatePreview" name="<?php echo $data['id']; ?>"><img id="imgEye" name="visualized" title="Visualized" src="../imgs/btn/eye-icon.png" /></a> 
    <?php } 
     ?> 
</td> 

任何人可以帮助我吗? 谢谢!

+0

为什么你使用ajax,如果它没有出现你正在做什么与数据被返回? **编辑 - 我看到了,您正在提交uid .... – Difster

+0

您确定成功被触发吗? – Difster

+0

回调函数内的'this'不指向DOM元素。 –

回答

2

this里面的success回调没有引用DOM元素,所以$(this).children('#imgEye')将简单地为空。

如果您在Ajax调用之外存储对元素的引用,那将会简单得多。

var img = $(this).children('#imgEye'); 

$.ajax({ 
    // ... 
    success: function() { 
    // ... 
    img.attr(...); 
    }. 
}); 

如果你真的想this指的DOM元素,见$(this) inside of AJAX success not working

+0

菲利克斯,谢谢!这是一个很好的解决方案!谢谢! – Marcel