jquery before()after()无法正常工作

时间:2012-06-07 12:57:02

标签: javascript jquery dom-manipulation

实际上我试图在ul之前插入这些(<div class="error_msg_div"><div class="error_msgicon_div"><span class="sprite_16x16_group_errorinfo fl rmar5"></span></div><div class="error_msgtext_div">)的东西和ul之后的这些(</div><div class="error_msgcloseicon_div"><span class="sprite_16x16_group_blueclose_icon fl curpointer"></span></div><div class="clearfloat"></div></div>)东西。

但是这里插入了div标签,但它自动关闭了div,但我不想要那个

因为我试图把ul推到一个div里面。这里没有发生的事。
我的 jsfiddle is here
这是我的剧本:

if($('span.error_span:has(ul.validation-messages)')){
                $('ul.validation-messages').before('<div class="error_msg_div"><div class="error_msgicon_div"><span class="sprite_16x16_group_errorinfo fl rmar5"></span></div><div class="error_msgtext_div">');
                $('ul.validation-messages').after('</div><div class="error_msgcloseicon_div"><span class="sprite_16x16_group_blueclose_icon fl curpointer"></span></div><div class="clearfloat"></div></div>');
            }​

2 个答案:

答案 0 :(得分:4)

请注意,您正在使用这些函数操作DOM,而不仅仅是简单地连接包含HTML的某些字符串。您无法追加</div>

您应该使用wrap()在列表中添加该div,然后使用before()after()插入其他div。

$('ul.validation-messages')
    .wrap('<div class="error_msg_div">')
    .before('<div class="error_msgicon_div"><span class="sprite_16x16_group_errorinfo fl rmar5"></span></div><div class="error_msgtext_div">')
    .after('<div class="error_msgcloseicon_div"><span class="sprite_16x16_group_blueclose_icon fl curpointer"></span></div><div class="clearfloat"></div></div>');

答案 1 :(得分:3)

您是否尝试过使用wrap代替beforeafter