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

时间:2018-03-01 11:20:00

标签: jquery arguments

以下是有罪的代码:

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);
});

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

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

尝试使用此代码替换:

<

答案 2 :(得分:1)

我认为你在这里有点意思

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