将所选文本设为变量&插入它

时间:2016-07-22 16:27:38

标签: javascript jquery html href textnode

我有一些HTML结构,如下所示:

<div class="info_contact">
    <h2>Contact</h2>
    <p><strong>E-Mail</strong><a href="mailto:someone@address.com">someone@address.com</a></p>
    <p><strong>Tel.</strong>+44 2456-458</p>
    <p><strong>Fax </strong>0123 456 7879</p>
</div>

目的是通过jQuery / Javascript使电话号码可点击。到目前为止,我设法根据需要选择并将文本包装在标签中:

jQuery(document).ready(function(jQuery) {
    jQuery( '.info_contact p:contains("Tel.")' )
    .contents()
    .filter(function(){
        return this.nodeType == 3;
    })
    .wrap( '<a href="tel:"></a>' );
});

但遗憾的是,缺少将所选文本作为href插入的选项,因此相应的行变为:

<p><strong>Tel.</strong><a href="tel:+44 2456-458">+44 2456-458</a></p>

有没有办法将所选文本插入href属性,可能是通过创建变量(或替代)?

2 个答案:

答案 0 :(得分:1)

wrap支持使用函数

jQuery(document).ready(function(jQuery) {
    jQuery( '.info_contact p:contains("Tel.")' )
    .contents()
    .filter(function(){
        return this.nodeType == 3;
    })
    .wrap( function(){ return '<a href="tel:' + $(this).text() + '"></a>' });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="info_contact">
    <h2>Contact</h2>
    <p><strong>E-Mail</strong><a href="mailto:someone@address.com">someone@address.com</a></p>
    <p><strong>Tel.</strong>+44 2456-458</p>
    <p><strong>Fax </strong>0123 456 7879</p>
</div>

答案 1 :(得分:0)

您可以在each之后循环(filter)结果,而wrap内的结果代之以:

&#13;
&#13;
jQuery(document).ready(function(jQuery) {
  jQuery('.info_contact p:contains("Tel.")')
    .contents()
    .filter(function() {
      return this.nodeType == 3;
    })
    .each(function(i, data) {
      $(data).wrap('<a href="tel:' + data.wholeText + '"></a>');
    })
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="info_contact">
  <h2>Contact</h2>
  <p><strong>E-Mail</strong><a href="mailto:someone@address.com">someone@address.com</a>
  </p>
  <p><strong>Tel.</strong>+44 2456-458</p>
  <p><strong>Fax </strong>0123 456 7879</p>
</div>
&#13;
&#13;
&#13;