2017-07-04 72 views
0

本來我有一個「喜歡按鈕」,也就是工作很順利,它看起來像這樣:呼叫數據-ID

<a href="javascript:void();" class="like" id="<?php echo $row['id']; ?>">Like <span><?php echo likes($row['id']); ?></span></a> 

下面是Ajax代碼:

<script> 
    $(function(){ 
     $(".like").click(function(){ 

      var postid = $(this).attr("id"); 
       $.ajax({ 
       type:'POST', 
       url:'addlike.php', 
       data:'id='+postid, 
       success:function(data){ 
        if(data=="you already liked this post"){ 
         alert(data); 
        } 
        else{ 
         $('a#'+postid).html(data); 
         } 
       } 
      }); 

     }); 
    }); 

</script> 

如果AJAX成功,addlike.php將有兩種響應,如果用戶已經喜歡它,或者更新喜歡的數量,則提示「您已經喜歡該帖子」。例如,如果當前有10個喜歡,當用戶點擊該按鈕時,$('a#'+ postid).html(數據)將會改變10到11,因爲在這種情況下,數據將是喜歡的更新數目,和$('a#'+ postid)選擇剛被點擊的「like button」。

出於某種原因,我必須使用數據id而不是id爲按鈕的html id。有關更詳細的解釋,請參見此處:Disable boostrap toggle collapse for one class and enable it for another

現在我必須調用ajax成功響應中具有data-id而不是id的元素,我該怎麼做?我試過以下內容:

 $('a#data-id'+postid).html(data); 
    $('.[data-id="postid"]').html(data); 
    $('a[data-id='+postid']').html(data); 
    $('a#'+"[data-id=postid"]).text(data); 

但它們都不起作用。提前致謝。

+0

是它工作正常? –

回答

2

by data attribute Select元素:

$('a[data-id="'+postid +'"]').html(data); 
+0

非常感謝你的工作! – gravition

+0

@gravition穿着聽到這一點。 –

0

在喜歡你的id屬性的錨標記創建屬性數據-ID = ''。然後,它會工作。

0

由於post-id是一個變量,可以包含任何字符,因此有必要將它放在引號(「」)或簡單引號('')之間。此要求適用於所有其他屬性比ID和CLASS等,如docs

$("a[data-id='" + postid + "']").html(data); 
0

說你已經在$(本)單擊處理程序裏面那個按鈕的引用。我建議你複製到一個變量和使用:

<script> 
    $(function(){ 
     $(".like").click(function(){ 
      var $linkClicked = $(this); 
      var postid = $(this).attr("id"); 
       $.ajax({ 
       type:'POST', 
       url:'addlike.php', 
       data:'id='+postid, 
       success:function(data){ 
        if(data=="you already liked this post"){ 
         alert(data); 
        } 
        else{ 
         $linkClicked.html(data); 
         } 
       } 
      }); 

     }); 
    }); 

</script>