我有以下标记:
<div class="span6">
<form>
<fieldset>
<label>Name:</label>
<input type="text" class="success field span6" placeholder="Name" name="name" id="name"> <i id="name" class="check"></i>
<label>Email:</label>
<input type="text" class="field span6" placeholder="Email" name="email" id="email" > <i id="email" class="check"></i>
<label>Message:</label>
<i id="message" class="check"></i><textarea class="field span9" rows="8" placeholder="Message" name="message" id="message"></textarea>
<label class="checkbox">
</label>
<button type="submit" class="btn disabled">Send Message</button>
</fieldset>
</form>
</div>
</div>
以下jQuery:
$('input,textarea').keyup(function(){
console.log($(this).closest(".check").attr("id"));
});
我返回的值未定义。当标记位于输入之前或之后时(如果所有标记都在我之后使用$()。next()),如何找到类'.check'的元素的id属性的值?< / p>
答案 0 :(得分:3)
尝试
var check = $(this).next(".check");
if(!check.length){
check = $(this).prev(".check");
}
console.log(check .attr("id"));
演示:Fiddle
答案 1 :(得分:2)
如果输入则使用next
,如果是textarea ....则使用prev
;
试试这个
var checkID='';
$('input,textarea').keyup(function(){
if($(this).is("input")){
checkID=$(this).next(".check").attr("id");
}else{
checkID=$(this).prev(".check").attr("id");
}
console.log(checkID);
});
答案 2 :(得分:1)
首先你的html不正确,请记住属性ID必须是唯一的。
然后,您可以转到父级(即表单标签)并找到您想要的孩子,如下所示:
$('input,textarea').keyup(function(){
console.log($(this).parents("form").find(".check").attr("id"));
});
答案 3 :(得分:0)
试试这个
$('input,textarea').keyup(function(){
console.log($(this).find().closest(".check").attr("id"));
});
答案 4 :(得分:0)
您正在使用nearest()错误。最近取得最近的父母。最好的方法是回到它的父母并取回孩子。查找并首先在这种情况下都可以使用
console.log($(this).parent().first(".check").attr("id"));