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

时间:2012-03-05 03:02:28

标签: jquery dom load innerhtml

我正在从一个页面读取一个表格行,然后尝试将单元格内容放入第二页的各种元素中。我有点工作,但我想(a)做得好,(b)摆脱我拾取的额外标签。 所以我的方法是......

$(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>

2 个答案:

答案 0 :(得分:1)

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

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

在正确执行方面,从页面加载html(抓取)很少正确执行。您应该从其他来源获取数据,例如json提供的&amp;由服务器等格式化。但如果你必须这样做,你的代码对我来说很好看:))

答案 1 :(得分:0)

就效率而言,我就是这样做的:

$(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秒。删除了其中一个。