2012-10-24 80 views
0

我有一個非常奇怪的問題與我維護的網絡系統。在視圖中,我想從我的DOM中的標籤字段獲取問題編號。但是,我的代碼無法找到標籤元素。jQuery.siblings沒有找到兄弟姐妹

這是腳本部分。

$(document).ready(function() { 
       $(function() { 
       var result = $(".answer").click(function() { 
        $(this).editable({ 
         className: "", 
         saveUrl: "../api/Results/SaveResults", 
         create: function() { 
          var number = $(this).siblings(".number").text(); 
          console.log(number); 
          $(this).editable("option", "questionNumber", number); 
         } 
        }); 
       }); 
      }); 
     }); 

這是HTML

<div class="questionDiv"> 
        <asp:Label ID="questionNumber1" runat="server" CssClass="number"></asp:Label> 
        <asp:TextBox ID="answer1" Wrap="True" runat="server" CssClass="answer" TextMode="MultiLine" Width="100%" 
          Rows="5" MaxLength="2000" Columns="65"></asp:TextBox> 
       </div> 

而且在瀏覽器中呈現:

<span id="questionNumber1" class="number">1</span> 
<textarea name="answer1" rows="5" cols="65" id="answer1" class="answer" style="width: 540px; "></textarea> 

出於某種原因,數量在創建函數變爲空字符串。使用$(this)的原因之一是因爲每頁有多個問題。該label.textPage_Load()方法中的後面的代碼設置。

我一直在嘗試一些不同的組合;

$(this).prev().text() 

$(this).parent().children(".number").text() 

$(this).parent().children().find(".number").text() 

如果我試圖在鉻控制檯,即這些組合。 $("#answer1").siblings().text()它完美的作品。

有沒有人有任何線索,爲什麼發生這種情況?所有的元素都應該在document.ready()函數中完成。

在此先感謝。

彼得

編輯:後SOM更多的研究,我發現,即使我用var number = $("questionNumber1").text();我只是得到一個空字符串。問題可能與DOM未被完全加載有關。該腳本塊位於document.ready()中,所以可以猜測DOM已加載。

回答

0

也許this裏面create方法是指除$(".answer")之外的其他東西嗎?

嘗試備份,可能有助於:

var result = $(".answer").click(function() { 
    var $this = $(this); 
    $this.editable({ 
     className: "", 
     saveUrl: "../api/Results/SaveResults", 
     create: function() { 
      var number = $this.siblings(".number").text(); 
      console.log(number); 
      $this.editable("option", "questionNumber", number); 
     } 
    }); 
}); 
0

的問題是,創建:函數是在另一種包裝的div $(本)。所以,parent()。parent()。first(「。number」)解決了它。