2014-10-08 64 views
0

我想隱藏圖像的AJAX完成後:元素不是隱藏

$('img[src$="control-power.png"]').on('click',function(){ 
      var id = $(this).attr("id"); 
      id = id.substring(8); 
      var user_id = $('#del_'+id).val(); 
      var donne = "pk="+user_id; 
      $.ajax({ 
        data: donne, 
        type: "POST", 
        url: "<?php echo HTTP_AJAX ?>admin/validerUtilisateurAjax.php", // updating a row in the database 
        async: false, 
        success: function() { $(this).hide(); } 
       }); 
     }); 

的圖像是一個表內:

<table id="table" class="data display "> 
    <thead style="background-color:#CCC"> 
    <tr> 
     <th>Noms</th> 
     <th>N° téléphone</th> 
     <th>Région</th> 
     <th>Ville</th> 
     <th width="5%"></th> 
     <th width="5%"><input type="checkbox" id="check_all" style="position: relative; top: 0px; left: 1px;"></th> 
     <th width="5%"></th> 
    </tr> 
    </thead> 
    <tbody style="background-color:#FFF"> 
    <tr class="odd gradeX"> 
     <td>Andriniaina Jean Aimé</td> 
     <td>261324494922</td> 
     <td>Boeny</td> 
     <td>Mahajanga I</td> 
     <td align="center" style="vertical-align:middle"><a href="admin.php?action=AdminModifierUtilisateur&amp;id=269"><img src="http://localhost/bazarmada/pages/img/icons/edit.png" style="height:10px;width:10px;"></a></td> 
     <td align="center" style="vertical-align:middle"><input type="checkbox" id="del_0" value="269"></td> 
     <td align="center" style="vertical-align:middle"><a><img src="http://localhost/bazarmada/pages/img/icons/control-power.png" id="valider_0" style="height:10px;width:10px;cursor:pointer"></a></td> 
    </tr> 
    <tr class="odd gradeX"> 
     <td>Andriniaina Nomenjanahary Todisoa</td> 
     <td>261328981998</td> 
     <td>Analamanga</td> 
     <td>Ambohidratrimo</td> 
     <td align="center" style="vertical-align:middle"><a href="admin.php?action=AdminModifierUtilisateur&amp;id=208"><img src="http://localhost/bazarmada/pages/img/icons/edit.png" style="height:10px;width:10px;"></a></td> 
     <td align="center" style="vertical-align:middle"><input type="checkbox" id="del_1" value="208"></td> 
     <td align="center" style="vertical-align:middle"><a><img src="http://localhost/bazarmada/pages/img/icons/control-power.png" id="valider_1" style="height:10px;width:10px;cursor:pointer"></a></td> 
    </tr> 
    <tr class="odd gradeX"> 
     <td>Andriniaina Nomenjanahary Todisoa</td> 
     <td>261325306341</td> 
     <td>Analamanga</td> 
     <td>Ambohidratrimo</td> 
     <td align="center" style="vertical-align:middle"><a href="admin.php?action=AdminModifierUtilisateur&amp;id=635"><img src="http://localhost/bazarmada/pages/img/icons/edit.png" style="height:10px;width:10px;"></a></td> 
     <td align="center" style="vertical-align:middle"><input type="checkbox" id="del_2" value="635"></td> 
     <td align="center" style="vertical-align:middle"><a><img src="http://localhost/bazarmada/pages/img/icons/control-power.png" id="valider_2" style="height:10px;width:10px;cursor:pointer"></a></td> 
    </tr> 
    </tbody> 
</table> 

但問題是,在運行數據庫更新,但圖像仍然顯示!那爲什麼不隱藏呢?

+0

'this'是不同的東西,一旦你的AJAX調用裏面 - 它之前分配給VAR ajax並在你的成功中使用 – Pete 2014-10-08 07:46:07

回答

2

您需要的$(this)參考存儲在一個變量,然後使用該變量的研製成功回調處理程序。

使用

$('img[src$="control-power.png"]').on('click', function() { 

    //Store this reference in a variable 
    var $this = $(this); 

    var id = $(this).attr("id"); 
    id = id.substring(8); 
    var user_id = $('#del_' + id).val(); 

    var donne = "pk=" + user_id; 
    $.ajax({ 
     data: donne, 
     type: "POST", 
     url: "<?php echo HTTP_AJAX ?>admin/validerUtilisateurAjax.php", // updating a row in the database 
     async: false, 
     success: function() { 
      //Use the reference variable here 
      $this.hide(); 
     } 
    }); 
}); 
+0

$(this)也適用,但src $屬性選擇器沒有正確設置 – David 2014-10-08 07:54:09

+0

@David,OP正在使用[Attribute Ends With Selector \ [name $ =「value」\]](http://api.jquery .com/attribute-ends-with-selector /) – Satpal 2014-10-08 07:57:38

+1

謝謝!今天學了這個。 – David 2014-10-08 07:58:34

2

你已經失去了this的背景。你需要將它保存在一個變量運行回調之前:

$('img[src$="control-power.png"]').on('click',function(){ 
      var id = $(this).attr("id"); 
      id = id.substring(8); 
      var user_id = $('#del_'+id).val(); 
      var donne = "pk="+user_id; 
      var _this = this; // save 
      $.ajax({ 
        data: donne, 
        type: "POST", 
        url: "<?php echo HTTP_AJAX ?>admin/validerUtilisateurAjax.php", // updating a row in the database 
        async: false, 
        success: function() { $(_this).hide(); } // use the saved _this 
       }); 
     }); 
+0

我想你在保存的時候寫錯了jQuery! – pheromix 2014-10-08 07:49:35

+0

@pheromix不,它應該有下劃線。 – Scimonster 2014-10-08 07:55:04

+0

這不是我談論的JavaScript變量,而是jQuery這個對象的引用! – pheromix 2014-10-08 07:57:29

-2

您正在使用的HTML圖像的絕對路徑,因此使用

$('img[src$="http://localhost/bazarmada/pages/img/icons/control-power.png"]').on('click',function(){ ...