我有以下
// 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?
非常感谢。
答案 0 :(得分:1)
从'a'到'ul'
$(link).parent().prev().append( newContent )
答案 1 :(得分:0)
直接查找ul
- 它比依赖您所依赖的DOM关系脆弱得多:
$(link).closest('ul.sortable_fields').append(content.replace(regexp, new_id))