1

我有以下标记:

<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 属性的值?

4

5 回答 5

3

尝试

var check = $(this).next(".check");
if(!check.length){
    check = $(this).prev(".check");
}
console.log(check .attr("id"));

演示:小提琴

于 2013-03-15T12:38:52.157 回答
2

使用nextif 输入和previf textarea....;试试这个

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);
});
于 2013-03-15T12:37:38.563 回答
1

首先你的 html 不正确,记住属性 ID 必须是唯一的。

然后,你可以去父级(即表单标签)找到你想要的子级,像这样:

$('input,textarea').keyup(function(){
   console.log($(this).parents("form").find(".check").attr("id"));
});
于 2013-03-15T13:10:38.760 回答
0

试试这个

$('input,textarea').keyup(function(){
       console.log($(this).find().closest(".check").attr("id"));
    });
于 2013-03-15T12:38:03.150 回答
0

您使用最接近()错误。Closest 获取最近的父级。最好的方法是回到它的父母那里去取孩子。Find 和 first 在这种情况下都可以使用

console.log($(this).parent().first(".check").attr("id"));
于 2013-03-15T12:41:45.933 回答