打开div标签并通过javascript在另一个地方关闭它

时间:2017-08-21 16:48:22

标签: javascript jquery

是否可以使用JavaScript打开任何标记,例如div#js并在我想要的任何地方插入结束标记,如下例所示?

<div id="first"></div>
<div id="js">
<div id="second"></div>
<div id="third"></div>
</div>
<div id="fourth"></div>

2 个答案:

答案 0 :(得分:2)

如果您从:

开头
class OsgRenderer : public QQuickFramebufferObject::Renderer
{
public:
    explicit OsgRenderer();

    QOpenGLFramebufferObject *createFramebufferObject(const QSize &size) LC_OVERRIDE;
    void synchronize(QQuickFramebufferObject* item) LC_OVERRIDE;
    void render() LC_OVERRIDE;

protected:
    friend class OsgWindow;

    OsgItem* m_osgItem;
};

void OsgRenderer::render()
{
    assert(m_osgItem);

    if ( !m_osgItem->getViewer() )
        return;

    // Without this line the model is not displayed in the second
    // and subsequent frames.
    QOpenGLContext::currentContext()->functions()->glUseProgram(0);

    // Ask OSG to render.
    m_osgItem->getViewer()->frame(); // WARNING: non-blocking (executed in a thread of its own - in a thread-safe way).

    // Reset OpenGl state for QtQuick.
    m_osgItem->window()->resetOpenGLState();
}

需要得到这个结构:

<div id="first">1</div>
<div id="second">2</div>
<div id="third">3</div>
<div id="fourth">4</div>

您可以使用<div id="first">1</div> <div id="js"> <div id="second">2</div> <div id="third">3</div> </div> <div id="fourth">4</div>

见下面的演示:

&#13;
&#13;
$('#second').wrap('<div id="js"></div>').after($('#third'))
&#13;
$('#second').wrap('<div id="js"></div>').after($('#third'));
&#13;
#js {
  color: blue;
}
&#13;
&#13;
&#13;

答案 1 :(得分:-2)

当你标记你的代码jQuery时,我会在那个意义上回答它。如果您以编程方式将div元素插入带有juery的页面,如下所示:

var bodyEl = $("body");
var myJsEl = $("<div>").attr("id", "js");

bodyEl.append(myJsEl);

...如前所述,$("<div>")代码是document.createElement("div")的功能等价物,它创建了代码块,同时打开和关闭DOM元素。因此,当我通过任一方法创建元素时,以编程方式说,关闭不是我可以控制的。

也就是说,在document.write()的“糟糕的旧时代”中,我们确实可以选择硬编码开始标记并忽略包含结束标记。不要这样做!它被弃用了,它的形式很糟糕,以后可能会产生严重的编码问题。