我正在尝试将新创建的部分添加到我的create.js.erb
控制器操作响应中呈现的现有部分列表中,滚动到该项并指示新添加的内容真的很不错突出它或什么的。我已经掌握了客户端javascript中滚动部分的内容,但create.js.erb
中部分渲染之后的所有效果都没有运行。有很多这方面的例子是可能的,我只是不确定为什么我的工作不起作用。
create.js.erb
$('#allTab').removeClass('active');
$('#activeTab').addClass('active');
$('#completeTab').removeClass('active');
// TODO: Make sure that li below gets an id="campaign_####" before this render happens.
$('#activeTabList').append("<li><%= escape_javascript(render partial: 'fundraisers/fundraiser', locals: {f: @fundraiser, g: @group}) %></li>")
var number_li = $('#activeTabList li').length;
var $newcampaigndiv = $('#activeTabList li').last().children("panel");
$('#number_of_campaigns').text('Campaigns (' + number_li + ')');
$("body").animate({
scrollTop: $newcampaigndiv.offset().top
}, {
duration: 600,
queue: false
});
$('#activeTabList li').last().children("panel").effect('highlight');
create.js.erb
$('#allTab').removeClass('active');
$('#activeTab').addClass('active');
$('#completeTab').removeClass('active');
// TODO: Make sure that li below gets an id="campaign_####" before this render happens.
$.when($('#activeTabList').append("<li><%= escape_javascript(render partial: 'fundraisers/fundraiser', locals: {f: @fundraiser, g: @group}) %></li>")).done(function () {
var number_li = $('#activeTabList li').length;
var $newcampaigndiv = $('#activeTabList li').last().children("panel");
alert('gets here at least');
$('#number_of_campaigns').text('Campaigns (' + number_li + ')');
$("body").animate({
scrollTop: $newcampaigndiv.offset().top + $newcampaigndiv.height() / 4 - $(window).height() / 2
}, {
duration: 600,
queue: false
});
$('#activeTabList li').last().children("panel").effect('highlight');
});
我对这个问题犹豫不决,因为我不反对接受这样一个事实,即我没有正确地穿越dom,但我一直在尝试各种组合以使其正确。
如果我尝试嵌入更多ruby来设置部分周围的<li>
的id,它会破坏整个动作并且不会渲染部分。知道我在这里缺少什么吗?