2013-02-22 96 views
1

我正在使用jQuery(AJAX)加載數據,然後將其加載到表中(所以這發生在頁面加載後)。如何獲取jQuery加載的HTML標籤之間的內容?

在每個表格行中都有一個'select'鏈接,允許用戶從表中選擇一行。然後,我需要獲取這一行中的信息,並將其放在頁面的下方。

$('#selection_table').on('click', '.select_link', function() { 
    $('#booking_address').text = $(this).closest('.address').text(); 
    $('#booking_rate').text = $(this).closest('.rate').val(); 
}); 

據我瞭解,在「最近」函數遍歷了DOM樹等等,因爲我的鏈接是在每行的最後一個單元格,就應該從上一行得到元素的地址「和「速度(這些類被分配給正確的單元格)。

我試着用快速和骯髒的「警報($(本).closest(等等......」在許多變化,但似乎沒有任何工作調試自己。

我需要做不同的事以在原始頁面加載後加載的數據爲目標?我在哪裏出錯?

回答

2

您對.closest()以及.text()的工作方式做出了錯誤的假設,請養成學習文檔的習慣當有疑問時,它會給出如何使用jQuery特性的清晰描述和示例。

  • .closest()會遍歷給定元素的父母,想您所提供它的匹配選擇。如果您的.select_link不在「內部」.address中,您的代碼將不起作用。

  • 此外,.text()是一種方法,而不是屬性(以語義的方式,因爲方法實際上是Javascript中的屬性)。 x.text = 1;只是重寫此元素上的方法,這不是一個好主意,您想要調用方法:x.text(1);

東西沿着這些線路可能的工作:

var t = $(this).closest('tr').find('.address').text(); 
$('#booking_address').text(t); 

如果#booking_address是一個表單元素,就可以使用.val()代替。

如果它不起作用,請提供您正在使用的HTML結構(編輯您的問題,使用jsFiddle或類似的服務),我會幫助您。當問這樣的問題時,無論如何提供相關的HTML結構都是一個好習慣。

+0

非常感謝bazmegakapa。我玩你的榜樣,並讓它工作。 :)將在3分鐘內標記爲正確。 – Anonymous 2013-02-22 11:57:01

-1

是否有代碼演示?檢查您何時調用代碼。應該在AJAX調用「成功」之後

0

您可以嘗試使用parent()和find()函數並直接查找數據,parent()和find()方法的數量取決於您的HTML。

Ex。拿到這將是

$('#selection_table').on('click', '.select_link', function(){ 
    $('#booking_address').text = $(this).parent().parent().prev().find('.address').text(); 
}); 

當父表示作爲前一行的父元素(TR),再上一個(),並發現找到元素上一行的數據。

+0

這不是一個很好的做法。 – kapa 2013-02-22 11:59:03