2013-02-07 153 views
0

遇到麻煩,請使用jQuery選擇我的ListView的兄弟值。這裏是我嘗試的jQuery語法,但是當我在firebug中寫入控制檯時進行調試時,它表示一切都未定義,但是當我查看html時,我可以看到它們中的值,所以我知道它們只是不選擇它們。它正在被更新按鈕的點擊事件調用,我需要抓住我更新的行的列表視圖中的不同行的兄弟姐妹。選擇HTML的兄弟值

 $('.nbr') 
.click(function){ 
      var newaddr = $(this).siblings('#addr').val(); 
      var originaladdr = $(this).siblings('#addr').attr('data-Value'); 
      var newplace = $(this).siblings('#place').val(); 
      var originalplace = $(this).siblings('#place').attr('data-Value'); 

的ListView:

<asp:ListView runat="server" id="ListView1" > 
     <LayoutTemplate> 
      <table id="tablesorter" style="border:solid 1px black;width:55%;"> 
       <thead> 
        <tr> 
         <th> 
          <a href="#">Addr</a> 
         </th> 
         <th> 
          <a href="#">Place</a> 
         </th> 
        </tr> 
       </thead> 
       <tbody> 
        <tr id="itemPlaceholder" runat="server" /> 
       </tbody> 
       <tfoot> 
       </tfoot> 
      </table> 
     </LayoutTemplate> 
     <ItemTemplate> 
      <tr> 
       <td> 
        <input maxlength="3" size="4" type="text" id="addr" data-Value="" value="<%# Eval("addr")%>" /> 
        <input maxlength="4" size="4" type="text" id="place" data-Value="" value="<%# Eval("place")%>" /> 
       </td> 
       <td> 
        <input type="button" class="nbr" id="btn_update" value="Update" />      
       </td> 
      </tr> 
     </ItemTemplate> 
    </asp:ListView> 
+0

什麼是'this'在這種情況下?這段代碼叫什麼名字? –

+0

你的html結構很奇怪。而這是什麼? – pktangyue

+0

可以請你發佈生成的HTML? –

回答

0

是兄弟姐妹#addr#place#addr#place唯一的東西。他們沒有其他的兄弟姐妹。所以你的邏輯有些錯誤。你想從中選擇什麼?

此外,由於您似乎正在使用可能會複製多次的模板,因此您將擁有多個具有相同id的元素。改用類。

最後,另一個提示,緩存您的jQuery對象,而不是重新創建相同的。

編輯:根據您的更新,你的問題是,你的按鈕nbr是表姐不是同級#addr#place。你需要做的是從nbr導航到它的父母td,然後從那裏到它的兄弟td,然後到它的孩子。

喜歡的東西:

$(this).parent().prev().children("#addr"); 

或多個完整的(你idclass而不是替換後):

$('.nbr').click(function){ 
    var parent = $(this).parent().prev(); 
    var addrNode = parent.children(".addr").first(); 
    var placeNode = parent.children(".place").first(); 

    var newaddr = addrNode.val(); 
    var originaladdr = addrNode.data('Value'); 
    var newplace = placeNode.val(); 
    var originalplace = placeNode.data('Value'); 
    // whatever you want to do with these values... 
} 

Here's a fiddle to demonstrate

+0

addr和place是填充值,因此它們具有不同的值 – Jt2ouan

+1

@ERead:我不是在談論它們的值,我是在談論它們的「id」。你不應該有多個具有相同'id'的HTML元素。 –

+0

仍然表示這些值是未定義的。我做到了。 var AddrNode = $(this).parent()。prev()。children(「#addr」); var newaddr = AddrNode.val();並沒有工作 – Jt2ouan