<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>
答案 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 强>