Jquery 如何将数据前置到特定的h2标记?

Jquery 如何将数据前置到特定的h2标记?,jquery,html,ajax,csv,Jquery,Html,Ajax,Csv,我有一个从csv文件加载数据的ajax脚本。然而,我很难将它预先设置为一个特定的h2标签 以下是我到目前为止的情况: <script> $.ajax({ url: 'csv_data.csv', dataType: 'text', }).done(successFunction); function successFunction(data) { var allRows = data.split(/\r?\n|\r/); var table = '<t

我有一个从csv文件加载数据的ajax脚本。然而,我很难将它预先设置为一个特定的h2标签

以下是我到目前为止的情况:

    <script>
$.ajax({
  url: 'csv_data.csv',
  dataType: 'text',
}).done(successFunction);

function successFunction(data) {
  var allRows = data.split(/\r?\n|\r/);
  var table = '<table>';
  for (var singleRow = 0; singleRow < allRows.length; singleRow++) {
    if (singleRow === 0) {
      table += '<thead>';
      table += '<tr>';
    } else {
      table += '<tr>';
    }
    var rowCells = allRows[singleRow].split(',');
    for (var rowCell = 0; rowCell < rowCells.length; rowCell++) {
      if (singleRow === 0) {
        table += '<th>';
        table += rowCells[rowCell];
        table += '</th>';
      } else {
        table += '<td>';
        table += rowCells[rowCell];
        table += '</td>';
      }
    }
    if (singleRow === 0) {
      table += '</tr>';
      table += '</thead>';
      table += '<tbody>';
    } else {
      table += '</tr>';
    }
  } 
  table += '</tbody>';
  table += '</table>';
  $('body').append(table);
}
</script>
我试着只在一个特定的h2标签上加上前缀:

$('<h2>Test</h2>').prepend(table)
$('Test')。前缀(表)
不知道为什么它不起作用。知道它为什么不在给定的h2标记前加前缀吗?

.prepend()
.append()
用于将一个元素放在另一个元素中(在现有内容之前或之后),但表不能放在标题元素中。您应该将它们分别附加到正文中:

$('body').append('<h2>Test</h2>', table);
$('body').append('Test',table);

您的代码不起作用,因为您使用了不正确的jQuery选择器来选择h2。h2需要存在,或者将其编码到HTML中,或者使用JavaScript添加,然后可以使用jQuery将其作为目标,如下所示:

   <h2 id="foo">test</h2>

    // JS
    const table = '<table></table>';

    $('#foo').prepend(table);

考虑使用jQuery对象来改进代码。例如:

var myData=“名称、城市、国家\r\n尼日利亚亚姆拉特市威廉”;
/*
$.ajax({
url:'csv_data.csv',
数据类型:“文本”,
}).完成(成功功能);
*/
$(函数(){
函数成功函数(数据){
var allRows=data.split(/\r?\n |\r/);
变量tbl=$(“”);
tbl.追加($(“”),$(“”);
$.each(所有行,函数(i,行){
变量单元格=行分割(“,”);
console.log(行、单元格);
如果(i==0){
$(“”)。附录($($(“thead”,tbl));
$。每个(单元格,函数(k,v){
$($(“thead>tr”,tbl).append($(“”).html(v));
});
}否则{
var r=$(“”)。附加到($(“tbody”,tbl));
$。每个(单元格,函数(k,v){
r、 追加($(“”).html(v));
});
}
});
控制台日志(tbl.prop(“outerHTML”);
$(“h2:第一”)。之前(待定);
}
成功函数(myData);
});


在这里测试两件主要的事情。首先,H2元素在“预结束”时不存在。第二,替换整个内容,同时添加H2和表将更有意义。另一个选项是,如果您已经有了H2元素,那么使用jQuery.after更容易

我认为在
h2
元素中不能有一个表。这就是我遇到的问题。我正在尝试将该脚本附加到测试中。我不知道该怎么做。我知道我可以将其附加到特定的类,但我想知道是否可以将其附加到h2标记您的意思是
Test…
?Prepend意味着
…Test
您的操作是向后的<代码>$('Test')。预结束(table)
说,创建一个新的h2元素,然后将表预结束到它。但是h2没有附在页面上。因此,您正在将表追加到它,但h2从未追加到页面,因此更改丢失。我可以使用:$('h2:contains(Test)')。before(table)$('h2:包含(测试)')。在(表)之前;似乎对我有用。
已经在DOM中了吗?我以为这是你想补充的。您编写了
$(“Test”)
,它用于创建新元素,而不是用于选择某些内容。
   <h2 id="foo">test</h2>

    // JS
    const table = '<table></table>';

    $('#foo').prepend(table);
$('#foo').before(table);

// will result in:
<table></table>
<h2 id="foo">Test</h2>