after(),其他参数不能按预期工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了after(),其他参数不能按预期工作相关的知识,希望对你有一定的参考价值。

这是有罪的代码:

var openDiv = '<div class="vc_row-full-width vc_clearfix"></div><div data-vc-full-width="true" data-vc-full-width-init="true" class="vc_row wpb_row vc_row-fluid vc_row-has-fill" style="padding:1em 0 0 0"><div class="wpb_column vc_column_container vc_col-sm-12"><div class="vc_column-inner"><div class="wpb_wrapper"><div class="wpb_text_column wpb_content_element" style="margin-bottom:0"><div class="wpb_wrapper"><div class="sharing"><span>Share this post:</span>';
var social = '<span>FB</span>';
var closeDiv = '</div></div></div></div></div></div></div>';
jQuery(document).ready( function(){
    jQuery(".splash").after(openDiv, social, closeDiv);
});

它很好地显示了开放Div和关闭Div的内容,但社交中的内容在这些div之外显示...我得到正确的结束标记,不明白为什么会发生。

谢谢你的帮助。

答案

问题是因为您只能追加元素作为一个整体。 html渲染器会自动添加HTML字符串中缺少的结束标记,因此social的内容会显示在您期望的位置之外。

要解决此问题,只需在追加它们之前连接所有字符串:

jQuery(document).ready(function($)  {
  $(".splash").after(openDiv + social + closeDiv);
});
另一答案

当字符串以<开头时,jQuery将其作为DOM节点元素处理。所以代码中的问题是jQuery认为你一次插入3个DOM节点元素。但事实并非如此。您将在3个变量中分别插入一个html代码。

尝试替换此代码:

jQuery(".splash").after(openDiv + social + closeDiv);
另一答案

我觉得你在这里有点意思

jQuery(document).ready( function(){
     jQuery(".splash").after(openDiv+ social+ closeDiv);
});

以上是关于after(),其他参数不能按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用 Vue 编辑数据不能按预期工作

为啥字符串相等在此 Python 代码中不能按预期工作? [复制]

循环中的求和对不能按预期工作[重复]

golang 类型转换不能按(我)预期的那样工作

为啥这个回滚功能不能按预期工作

这个 C++ 代码会一直按我的预期工作,还是不能保证执行顺序?