0

我有一个隐藏的 div,我想将它添加(附加)到 DOM 中的另一个位置。我拥有的代码没有按预期工作;

$('[class*="time-span"]').on('click', function() {

    var modelPanel = $('.model-detail-panel');

    modelPanel.contents().wrap('<div class="model-detail-panel" id="model-detail">').insertAfter('.timeline');
    modelPanel.slideToggle('fast', function() {
        $('html,body').animate({
            scrollTop: $(this).offset().top
        }, 500);
    });
});

div 'model-detail-panel' 的内容被插入到正确的位置,但实际周围的 div 没有被插入。为什么会这样,并且是我使用最合适的方法来实现这一目标的方法?

提前致谢...

4

3 回答 3

1

问题是该wrap()方法返回被包装的元素,而不是新创建的包装元素。因此,您应该使用parent()

modelPanel.contents().wrap('<div class="model-detail-panel" id="model-detail">').parent().insertAfter('.timeline');

参考:

于 2012-10-15T14:55:16.003 回答
0
var wrapped = $('<div class="model-detail-panel" id="model-detail/">').insertAfter('.timeline')
wrapped.append(model.contents)
于 2012-10-15T14:57:24.717 回答
0

为了与其他链接方法保持一致,wrap()返回调用它的 jQuery 对象,而不是包装器元素。

您可以将parent()应用于结果,以便在insertAfter()操作中包含包装元素:

modelPanel.contents().wrap(
    '<div class="model-detail-panel" id="model-detail">'
).parent().insertAfter('.timeline');
于 2012-10-15T14:55:00.033 回答