【问题标题】:append div with another div content using xpath使用 xpath 将 div 附加到另一个 div 内容
【发布时间】:2016-03-23 07:03:35
【问题描述】:

我想使用继承父模板的 xpath 附加 div。

例如。 这是父模板

<template id="parent_id">
    <div id="header">
        <div class="container">
            <h1> HEADER </h1>
        </div>
    </div>
    <div id="product">
        <div class="container">
            <!-- THERE IS SOME CONTENT -->
        </div>
    </div>
</template>

我想这样改变,

<template id="parent_id">
    <div id="product">
        <div class="inner">
            <div class="container">
                <!-- THERE IS SOME CONTENT -->
            </div>
        </div>
    </div>
</template>

我试试这个,

<template id="product_custom" inherit_id="parent_id">
    <xpath expr="//div[@id='product']" position="after">
        <div class="inner">
    </xpath>
</template>

虽然替换所有内容很容易或将所有内容复制到自定义模板,但这不是正确的方法。我想在内容上包装一个 div。

【问题讨论】:

    标签: xpath openerp odoo-8 openerp-8


    【解决方案1】:

    我认为你不能这样做,因为你要么覆盖内容,要么将 &lt;div/&gt; 放在所选元素之前、之后。

    一个简单的解决方案是使用position="attributes"id="product" div 赋予inner 类。或者如果你真的需要这个,一个可能的解决方案是:

    1. id="product" 替换为class="inner" 并使用attributes 位置进行一次覆盖
    2. 在第二次覆盖中定义您自己的模板并在其中调用原始模板

    你最终会得到这样的结果:

      <template id="my_parent" inherit_id="foo.parent_id">
        <div id="product">
          <t t-call="foo.parent_id" />
        </div>
      </template>
    

    加上属性的覆盖。从来没有做过这样的事情,上面的代码没有经过测试,但它可以工作;)

    【讨论】:

    • 谢谢,我也尝试position="attributes" 它工作但实际上不是我想要的。你的另一个解决方案很好,它解决了问题,但在我的情况下它不起作用。
    • 您能提供更多相关信息吗?没有示例,我无能为力。
    • 我更新了我的问题,在父模板中可能有更多内容。但我想包装特定内容,所以我认为t-call 不起作用。
    • 那么我认为你不能这样做:) 所以,我认为你有 2 个选择:1. 重写它 2. 使用 JS 动态包装元素
    猜你喜欢
    • 1970-01-01
    • 2018-11-30
    • 2023-03-20
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    相关资源
    最近更新 更多