2011-03-31 128 views
1

我們有2個問題與jquery。請看看下面...jquery tr id選擇

我們使用下表:

<tr id="row-5"> 
    <td></td> 
    <td><a class="delete" href="#">Delete</a></td> 
</tr> 

而且我們使用下面的代碼:

$(function() { 
    $('.delete').click(function() { 
     var id = $(this).parents("tr").attr("id"); 
     var info = 'id=' + id; 
     $.ajax({ 
      type: "POST", 
      url: "delete.php", 
      data: info, 
      success: function() {} 
     }); 
     return false; 
    }); 
}); 

所以我們的問題......

  1. 我們如何獲得id(5)而不是第5行的正確值?
  2. 我們應該使用jQuery代碼上的每個函數嗎?如果是的話,我們該怎麼做?

感謝您的支持。

回答

1

更新

重新下方的評論:

我詢問了每個功能,因爲我使用jQuery的排序和分頁爲100行和刪除按鈕第10行,但之後的偉大工程它改變URL以#

那是因爲你只掛鉤是已經存在行當p年齡被加載。如果你改變你的代碼使用delegatelive代替click,它會添加了新的工作崗位:

$(function() { 
    // Change is +--- here 
    //   V 
    $('.delete').live('click', function() { 
     var id = $(this).closest("tr").attr("id"); 
     id = id.substring(4); // or .split('-')[1] as suggested by other answer 
     var info = 'id='+id; 
     $.ajax({ 
      type: "POST", 
      url: "delete.php", 
      data: info, 
      success: function(){ 
      } 
     }); 
     return false; 
    }); 
}); 

bindclick只是爲bind的快捷方式)處理程序掛接到元素已經存在。當你使用分頁插件時,其他元素還沒有出現,所以他們不會迷上。 delegatelive工作方式有所不同:他們利用事件冒泡並將事件掛接到容器元素上(live使用文檔的根,delegate使用您指示使用的任何內容)。有關詳細信息,請參閱鏈接的文檔。如果您可以使用植根於容器表中的delegate,則優先於live


原來的答覆

attr是給你正確的值( 「行5」)。如果你想只提取「5」從這一點,你可以用substring

id = id.substring(4); 

,我沒有看到任何地方,你就需要循環。


題外話:您還可以通過使用closest而不是parents保存瀏覽器中的一些工作。

$(function() { 
    $('.delete').click(function() { 
     var id = $(this).closest("tr").attr("id"); 
     var info = 'id='+id; 
     $.ajax({ 
      type: "POST", 
      url: "delete.php", 
      data: info, 
      success: function(){ 
      } 
     }); 
     return false; 
    }); 
}); 
+0

幾乎正確,您必須使用'id.substr(3);',因爲索引從0開始,子字符串函數在js中稱爲substr。 – ntziolis 2011-03-31 11:51:41

+1

@ntziolis:JavaScript有'substring'和'substr'('substring'是from/to,'substr'是from/length)。這兩種情況下的「from」都是從零開始的,所以我們在這種情況下需要'4'而不是'3'(因爲我們想從第五個字符開始,而不是第四個字符):http://jsbin.com/ekuhi4 – 2011-03-31 11:55:05

+0

@TJ Crowder thx的子字符提示,是的,你是對的4是正確的索引開始,男人我的計數已經好一次;) – ntziolis 2011-03-31 11:57:02

5

1 - var id = $(this).closest("tr").attr("id").split("-")[1];

2 - 沒有必要,因爲你是選擇行是最接近父行的點擊錨。

+0

或者只是使用'$(this).closest(「tr」)。attr(「id」)。substr(4);' – ntziolis 2011-03-31 11:52:33

+0

我贊成'split'方法, - 使用它並不是真正的殺手理由,但這只是我的偏好。 – karim79 2011-03-31 11:55:31

+0

謝謝你的回答,我問了每個函數,因爲我使用的jQuery排序和分頁100行和刪除按鈕偉大的前10行,但之後,它將網址更改爲#。 – seoppc 2011-03-31 12:06:55