javascript
  • jquery
  • html
  • css
  • 2016-09-14 57 views -1 likes 
    -1

    不知何故,当我尝试在jQuery中创建自定义HTML标记时,我得到了额外的中断点。任何人都可以解释我在这里错过了什么?为什么我的自定义jQuery html标签添加不存在的断点?

    我有以下jQuery函数:

    $('address').each(function() { 
     
         var link = "<a href='http://maps.google.com/maps?q=" + encodeURIComponent($(this).text()) + "' target='_blank'>" + $(this).text() + "</a>"; 
     
         $(this).html(link); 
     
        });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    
     
    <h6 class="centered">Copyright © <script>document.write(new Date().getFullYear());</script> Company Name, LLC. All Rights Reserved <address>123 S Main St, Los Angeles, CA 90012</address><a href="tel:+11234567890">123-456-7890</a></h6>

    产生以下页脚:

    Bad Footer

    然而,通过简单地手动添加地址,像这样:

    <h6 class="centered">Copyright © <script>document.write(new Date().getFullYear());</script> Company Name, LLC. All Rights Reserved <a href="http://maps.google.com/maps?q=123 S Main St, Los Angeles, CA 90012" target="_blank">123 S Main St, Los Angeles, CA 90012</a> | <a href="tel:+11234567890">123-456-7890</a></h6>

    我得到预期的正确格式化页脚:

    Good Footer

    这是一个隐藏属性我不知道的jQuery的?我对jQuery相当陌生,但我认为这个想法是DOM元素的简单替换?

    +0


    只适用于块标签。 –

    +0

    问题是与'地址'标记,我希望如此 – Sasikumar

    +0

    我试图把它放在一个片段为你,但我无法复制它,所以我把它复制到一个小提琴用于评论:https:/ /jsfiddle.net/ob19d1k9/ –

    回答

    1

    因为你不更换<address>标签在你的jQuery

    利用这个

    $(this).replaceWith(link); 代替$(this).html(link);

    如果您使用的.html(),它只是在标签内增加。但在您的预期结果中,您没有<address>标记。所以你想要的是replaceWith

    +0

    哪种方法更好?使用'replaceWith'或修改'

    '标签为'inline'而不是阻塞? – Blairg23

    +0

    如果您仅使用地址标记来添加Google地图链接,那么使用replaceWith会很好。这取决于你的使用情况。如果您看到预期的结果,我想您不需要地址标签,而需要替换。 –

    +0

    感谢@Vivek MVK! – Blairg23

    2

    您的第一个示例在页脚中有address标记,即使在脚本执行后也是如此。你的第二个例子没有。

    address默认情况下是块标记。尝试设置address { display: inline; }


    原因的address元件仍然在文档中,是html HTML目标节点。如果您想用自定义内容替换元素,则可以使用replaceWith代替。

    +0

    斑点!所以实际上,根本没有'
    '元素。 –

    +0

    我明白了......我以为我在创建jQuery函数时创建了'

    '标签。感谢您指出了这一点! – Blairg23

    +0

    完全解决了它,谢谢@David Hedlund! – Blairg23

    相关问题