在mithrill组件加载后修改html

时间:2017-01-14 03:57:28

标签: javascript jquery mithril.js

这是我的一部分

m('.w-row', _.map(ctrl.posts(), (post) => {
                        return m('.w-col.w-col-4.col-blog-post',
                            [
                                m(`a.link-hidden.fontweight-semibold.fontsize-base.u-marginbottom-10[href="${post[2][1]}"][target=\'__blank\']`, post[0][1]),
                                m('.fontsize-smaller.fontcolor-secondary.u-margintop-10', m.trust(`${post[1][1]}`))
                            ]
                        );
                    })),

m.trust('${post[1][1]}')部分,我得到了html的一部分。我想用html做的是为该html中的每个链接添加target _blank。我尝试在config中添加trust但该功能未执行。知道我该怎么做。

这是我的js将目标_blank添加到html

var div = document.getElementsByClassName('medium-feed-item');
div[0].getElementsByTagName('a');
div[0].getElementsByTagName('a')[0].setAttribute('target', '_blank');

1 个答案:

答案 0 :(得分:2)

您需要将config来电置于m.trust

上方的节点中
m('.w-row', _.map(ctrl.posts(), post =>
  m('.w-col.w-col-4.col-blog-post',
    m(`a.link-hidden.fontweight-semibold.fontsize-base.u-marginbottom-10[href="${post[2][1]}"][target=\'__blank\']`, post[0][1]),
      m('.fontsize-smaller.fontcolor-secondary.u-margintop-10', {
        config(el){
          _.map(el.querySelectorAll('a:not([target=__blank])'), el =>
            el.setAttribute('target', '__blank')
          )
        }
      },
        m.trust(`${post[1][1]}`)
      )
    )
  )
)