2010-02-11 68 views
1

我正在做一個AJAX請求與JQuery和PHP我在做什麼循環通過一個數組併產生一個表,每個循環創建一個新的和一個ID給它,當他們點擊閱讀我的鏈接ajax並返回一些更多的內容,點擊閱讀更多我想從表中刪除關聯的錶行是可能的,你可以看到我下面的嘗試。jQuery幫助獲取錶行的ID

<div id="new" class="tabdiv"> 
    <table> 
    <?php 
     $colours = array("#f9f9f9", "#f3f3f3"); $count = 0; 
     if(isset($newSuggestions)) { 
      foreach($newSuggestions as $row) { 
       if($row['commentRead'] == 0) { 
    ?> 
        <tr id="<?=$row['thoughtId'];?>" bgcolor="<?php echo $colours[$count++ % count($colours)];?>"> 
    <?php 
         echo "<td>".substr($row['thought'], 0,50)."...</td>"; 
         echo "<td class='read'><a href='".base_url()."thought/readSuggestion/".$row['thoughtId']."' class='readMore'>Read More</a>"; 
        echo "</tr>"; 
       } 
      } 
     } else { 
      echo "You have no new suggestions"; 
      } 
    ?> 
    </table> 

$('a.readMore').click(function(){ 
      $('#readMore').fadeIn(500); 
      var url = $('a.readMore').attr('href'); 
      $.ajax({ 
       url : url, 
       type : "POST", 
       success : function(html) { 
        $('#readMore').html(html) 
       }, 
       complete : function() { 
        $('tr').remove() 
       } 
      }); 
      return false; 
     }); 

回答

4

你可以得到該行的id是這樣的:

$(this).parent().parent().attr("id") 

$(this)包裝的一個元素,第一親獲取TD和下一個的TR。在點擊回調中調用它。確保ID以字母開頭;不允許開始一個號碼。要刪除它,定義一個變量:

var row = $(this).parent().parent(); 

然後,您可以在回調中刪除:

row.delete(); 
0

作爲kgiannakakis指出你需要被點擊的元素的引用。 要找出什麼地方出了錯,考慮你的代碼的下面幾行:

$('a.readMore').click(function(){ 
    var url = $('a.readMore').attr('href'); 
    ... 
    return false; 
}); 

你在這裏做什麼是添加事件處理程序與一個readMore類全部元素。 單擊鏈接時,再次選擇具有readMore類的所有元素,並從第一個匹配元素中檢索href屬性。 你想要做的是從被點擊的元素中獲取屬性。

$('a.readMore').click(function(){ 
    var url = $(this).attr('href'); 
    ... 
    return false; 
}); 

的成功和你的Ajax請求的完整處理同樣的問題出現,請注意,你不能在成功使用/完整的處理程序,因爲它可能會指向另一個對象,所以你需要將它存儲在調用ajax函數之前在var中。