删除div如果存在于div之后并放入主div中

时间:2014-02-07 06:50:53

标签: jquery html

<div class="error">
<input type="text" name="email">
<div class="error-message">Please Enter Email</div>
</div>
<div class="i-icon-div">Lorem Ipsum</div>

我想在div类错误之后检查div是谁有类i-icon-div //我的删除和包装代码没有工作

jQuery代码

if($(".error" ).nextAll(".i-icon-div:first").length > 0){
      alert("div exits");
      // $(this).nextAll(".i-icon-div:first").remove(); not working
     }

之后我需要输出

<div class="error">
    <input type="text" name="email">
    <div class="error-message">Please Enter Email</div>
    <div class="i-icon-div">Lorem Ipsum</div>
</div>

4 个答案:

答案 0 :(得分:2)

以下是您的回答

您正在使用

$(this).nextAll(".i-icon-div:first").remove();
//$(this) is null in code
//if you use .each you can get each element in $(this)

使用

$(".error" ).nextAll(".i-icon-div:first").appendTo('.error')

Jquery代码

$('.error').each(function(index, element) {
if($(this).nextAll(".i-icon-div:first").length > 0){
    $(this).nextAll(".i-icon-div:first").appendTo($(this))
}
});

对于较短的代码您可以将所选元素保存在变量中,如

$ele = $(".error" ).nextAll(".i-icon-div:first")
if($ele.length > 0){
              $ele.appendTo('.error')
    }

这是jsfiddle,效果很好http://jsfiddle.net/krunalp1993/e43dk/3/

希望这可以帮助你:)

答案 1 :(得分:1)

您可能在没有正确上下文的情况下使用$(this)if语句不是jQuery函数,而是用于当前element。您可以将所需元素放在某个variable中,然后在if条件中使用它。

reqDiv = $(".error" ).nextAll(".i-icon-div:first");
if(reqDiv.length > 0){
  alert("div exits");
  //  reqDiv.remove(); 
  or
  $('.error').append(reqDiv);   
}

答案 2 :(得分:1)

我认为您可以使用next adjuscent sibling selector

var $error = $('.error');
$('.error + .i-icon-div').appendTo($error)

演示:Fiddle

答案 3 :(得分:1)

最好循环浏览所有.error并在.error-message之后插入图标,如果它符合您的要求,如下所示:

$.each($(".error"), function () {
    var firstIcon = $(this).nextAll(".i-icon-div:first"),
        errorMessage = $(this).find('.error-message');

    if (firstIcon.length > 0) {
        firstIcon.insertAfter(errorMessage);
    }
})

<强> Fiddle Demo