2012-12-24 10 views
2

這是我的AJAX的jQuery位:..........無法添加變量的成功函數

$(function() { 
    $(".follow").click(function() { 
     var element = $(this); 
     var I = element.attr("id"); 
     var info = 'id=' + I; 

     $.ajax({ 
      type: "POST", 
      url: "follow.php", 
      data: info, 
      success: function() { 
       $('.follow' + I).fadeOut(200).hide(); 
       $('.following' + I).fadeIn(200).show(); 
      } 
     }); 
     return false; 
    }); 
}); 

我的HTML是:

echo "<tr>"; 

    echo '<td>'. $table["username"]. '</td>'.'<td>'.'<a href="#" id="'.$table['id'].'" class="follow">'.'</a>' . '<a href="#" id="'.$table['id'].'" class="following" style="display:none">'.'</a>' . '</td>'; 

    echo "<tr>"; 

(這是在一個while循環)

成功,我試圖淡出跟隨按鈕(與其ID),並用相同的ID替換它下面的按鈕 - 但是當使用(+ I)它不似乎在工作?

我哪裏錯了?

+0

您是否收到錯誤消息? – lvil

+0

這兩個鏈接是否相同? ** $ table ['id'] ** – Nowshath

回答

4

如果您將一些HTML與您的代碼一起發佈,以便了解這應該起作用,它將會有所幫助。

總之,從我在你的代碼中看到的,我 認爲它看起來是這樣的:
好像我的推論標記是正確的,你的標記歸結爲:

<a class="follow" id="foobar">Follow</a> 
<a class="following" id="foobar">Following</a> 

如果您想要選擇類別爲.following和ID foobar的元素,您會寫$('#foobar.following')$('.following#foobar')。所以,你的代碼將不得不進行調整,以:

$('.follow#' + I).fadeOut(200).hide(); 
$('.following#' + I).fadeIn(200).show(); 

然而,這個更根本的問題:ID唯一標識的元素,這意味着你不能對具有相同ID兩個元素同一頁。上面的HTML是無效的,選擇器超過了類選擇器的資格。更好的解決方案將是使用一個data-屬性來標識後續/以下元素屬於哪個用戶到:

<a class="follow" data-userid="foobar">Follow</a> 
<a class="following" data-userid="foobar">Following</a> 

你會然後存儲數據屬性,而不是ID:

var I = element.data("userid"); 

和選擇使用數據屬性:

$('.follow[data-userid=' + I + ']').fadeOut(200).hide(); 
$('.following[data-userid=' + I + ']').fadeIn(200).show(); 

正如前面提到的,你實際上並不需要選擇.follow元素了。只需使用element

element.fadeOut(200).hide(); 
$('.following[data-userid=' + I + ']').fadeIn(200).show(); 
+0

這太棒了 - 我剛剛學到了很多!非常感謝 –