【问题标题】:jQuery .load() - getting td contents from the DOMjQuery .load() - 从 DOM 获取 td 内容
【发布时间】:2012-03-05 03:02:28
【问题描述】:

我正在从一页读取表格行,然后尝试将单元格内容放入第二页的各种元素中。我有它的工作,但我想(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 新手,我这样做效率低下(或错误)。特别是,有一个空的&lt;span id="result_row"&gt; 似乎不正确。更重要的是,它还将&lt;td&gt; 标签导入&lt;span&gt; 元素,我想避免这种情况。所有对 innerHTML 的尝试都失败了(例如 var date = $('td:eq(0)',this).innerHTML;

感谢您的帮助,

尼克

编辑:所以现在我可以这样做三遍

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

避免获得&lt;td&gt; 标签。或者我可以这样做

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

我认为这看起来更清晰(我假设最后三行可以合二为一)。遗憾的是 .text() 似乎不起作用,所以我在输出中坚持使用 &lt;td&gt;

【问题讨论】:

  • 这3次是什么? $('td:eq(0)',this);

标签: jquery dom load innerhtml


【解决方案1】:

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

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

就正确执行而言,从页面加载 html(抓取)很少正确执行。您应该从其他来源获取数据,例如由服务器提供和格式化的 json 等。但是如果您必须这样做,您的代码对我来说看起来不错:)

【讨论】:

  • 感谢克里斯蒂安的快速回复。我确实尝试了 .html() 但无法让它工作。 .text() 可以完美地工作。我认为这不是最推荐/最明智的技术,但它只是一个基本的、快速的朋友网站。他们正在更新一个讲座表(这是他们的 HTML 知识的总和)。大学服务器只允许 HTML。因此,我认为在主页上显示“下一个”讲座的最简单方法就是从桌子上抓取它......
【解决方案2】:

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

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

【讨论】:

  • 您好,感谢 Eli 的快速回复。我试过这个方法,但它似乎不起作用。据我所知(从我的新手位置),变量上下文是空的。此外,即使我使用新的测试数组明确设置数据的值,最后一行也不显示任何内容。如果我使用数据键,我会在三个元素中看到相应的测试数组值。我真的很喜欢这段代码的概念,尤其是我应该自己发现的数组的使用,我就是无法让它工作。
猜你喜欢
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-13
相关资源
最近更新 更多