2013-02-22 92 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