如何获取jQuery加载的HTML标记之间的内容?

时间:2013-02-22 11:45:32

标签: ajax jquery dom-manipulation dom-traversal

我正在使用jQuery(AJAX)加载数据,然后将其加载到表中(因此这会在页面加载后发生)。

在每个表行中都有一个“选择”链接,允许用户从表中选择一行。然后,我需要获取此行中的信息并将其放入页面下方的表单中。

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

根据我的理解,'最近'的函数遍历DOM树,因此我的链接在每行的最后一个单元格中,它应该从前一行获取元素'address'和'rate(类是分配到正确的单元格。)

我尝试使用快速而肮脏的'警告($(this).closest(等等......)在许多变体中调试自己,但似乎没有任何效果。

我是否需要采取不同的措施来定位原始页面加载后加载的数据?我哪里错了?

3 个答案:

答案 0 :(得分: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结构。

答案 1 :(得分:0)

您可以尝试使用parent()和find()函数并直接找到数据,parent()和find()方法的数量取决于您的HTML。

实施例。获取以前的行数据

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

其中parent表示父元素(tr),则prev()作为上一行,find查找元素。

答案 2 :(得分:-1)

在某处有代码演示吗?检查您何时调用代码。它应该是在AJAX调用'成功'之后。