在jQuery的特定标记之前添加HTML元素

时间:2012-02-25 19:11:54

标签: jquery

我有以下

// jQuery
function add_fields(link, association, content) {
  var new_id = new Date().getTime();
  var regexp = new RegExp("new_" + association, "g");
  $(link).parent().before(content.replace(regexp, new_id));//.prev().hide().show("slow");
}

// HTML
<ul class="sortable_fields">
</ul>
<p id="add_field"><%= link_to_add_fields "Add Trip Day", f, :trip_days %></p>

我正在使用Rails,你可以优雅地忽略它。当我添加字段时,content.replace(regexp, new_id)中描述的新HTML代码将显示在<p>之后。例如:

如果content.replace(regexp, new_id)<li>Test</li>,则会产生:

<ul class="sortable_fields">
</ul>
<p id="add_field"><%= link_to_add_fields "Add Trip Day", f, :trip_days %></p>
<li>Test</li>

而不是:

<ul class="sortable_fields">
  <li>Test</li>
</ul>
<p id="add_field"><%= link_to_add_fields "Add Trip Day", f, :trip_days %></p>

我知道我可以更改.before(),但由于系统会生成HTML内容,所以我宁愿不触摸它。我该如何更改jQuery?

非常感谢。

2 个答案:

答案 0 :(得分:1)

从'a'到'ul'

$(link).parent().prev().append(  newContent )

答案 1 :(得分:0)

直接查找ul - 它比依赖您所依赖的DOM关系脆弱得多:

$(link).closest('ul.sortable_fields').append(content.replace(regexp, new_id))