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>
。
如果您只想获取td
中的数据,请使用.html()
或.text()
。例如:
var date = $('td:eq(0)',this).html();
在从页面做正确,加载HTML(刮)而言是很少做正确。你应该从其他来源越来越的数据,如提供&服务器等格式的JSON但是如果你必须这样做,你的代码看起来好像没什么问题:)
感谢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。删除了其中一个。
嗨,感谢Eli的快速反应。我尝试了这种方法,但它似乎不起作用。从我可以告诉(从我的新手位置)变量上下文是空的。此外,即使我使用新的测试数组显式设置数据值,最后一行也不会显示任何内容。如果我使用数据键,那么我会在三个元素中看到相应的测试数组值。 我真的很喜欢这段代码的概念,特别是我应该发现自己的数组的使用,我只是不能得到它的工作。 – 2012-03-05 07:46:36
这是什么3次? '$('td:eq(0)',this);' – Eli 2012-03-05 03:16:09