jQuery .load() - 从DOM中获取td内容

问题描述:

我正在从一个页面读取表格行,然后尝试将单元格内容放入第二页上的各个元素中。我有这样的工作,但我想(a)正确地做,并(b)摆脱我拾起的额外标签。 所以我的方法是....jQuery .load() - 从DOM中获取td内容

$(document).ready(function() { 
    $(function(){ 
    $('#result_row').load('schedule.html #schedule_list tr:eq(1)',function(){ 
     var date = $('td:eq(0)',this); 
     $('#date').html(date); 
     var title = $('td:eq(0)',this); 
     $('#title').html(title); 
     var speaker = $('td:eq(0)',this); 
     $('#speaker').html(speaker); 
    });    
    }); 
}); 

,然后我有 <div class= "upcoming"> Next Talk: <span id="speaker"></span> - <span id="title"></span> (<span id="date"></span>) </div> <span id="result_row"></span>

所以此工程到一个点,但我有一个明显的感觉,我低效(或错误的)做这件事,因为我是一个jQuery新手。特别是,有一个空的<span id="result_row">似乎不正确。更重要的是,它还将<td>标签导入<span>元素,我想避免这些元素。所有尝试innerHTML的失败(如var date = $('td:eq(0)',this).innerHTML;

感谢您的帮助,

尼克

编辑:所以,现在我可以做到这一点三倍

var date = $('td:eq(0)',this).text(); 
$('#date').text(date); 

就避开了<td>标签。或者我可以做到这一点

var data = $.find('td',this); 
$('#date').html(data[0]); 
$('#speaker').html(data[1]); 
$('#title').html(data[2]); 

我认为看起来更清晰(我认为最后三行可以在一个中完成)。可悲的是.text()似乎不起作用,所以我坚持在我的输出中使用了<td>

+0

这是什么3次? '$('td:eq(0)',this);' – Eli 2012-03-05 03:16:09

如果您只想获取td中的数据,请使用.html().text()。例如:

var date = $('td:eq(0)',this).html(); 

在从页面做正确,加载HTML(刮)而言是很少做正确。你应该从其他来源越来越的数据,如提供&服务器等格式的JSON但是如果你必须这样做,你的代码看起来好像没什么问题:)

+0

感谢Christian的快速反应。 我确实尝试过.html(),但无法让它正常工作。 .text()虽然完美。 我认为这不是最受推荐的/最明智的技术,但它只是一个朋友的基本快速网站。他们正在更新一个讲座表(这是他们HTML知识的总和)。大学服务器只允许HTML。因此,我认为在主页上显示'下一个'讲座最简单的方法就是从表格中抓取它...... – 2012-03-05 07:17:29

在效率方面,这是我会怎样做它:

$(document).ready(function() { 
    var resultRow = $('#resultRow'); 

    $.ajax({ 
     url: 'schedule.html' 
    }) 
    .done(function(response) { 
     var context = $('#schedule_list tr:eq(1)'), 
      data = context.find('td:eq(0)'); 

     $('#date, #title, #speaker').html(data).appendTo(resultRow); 
    }); 
}); 

我注意到你有2 document.ready s。删除了其中一个。

+0

嗨,感谢Eli的快速反应。我尝试了这种方法,但它似乎不起作用。从我可以告诉(从我的新手位置)变量上下文是空的。此外,即使我使用新的测试数组显式设置数据值,最后一行也不会显示任何内容。如果我使用数据键,那么我会在三个元素中看到相应的测试数组值。 我真的很喜欢这段代码的概念,特别是我应该发现自己的数组的使用,我只是不能得到它的工作。 – 2012-03-05 07:46:36