我目前正试图在对象上使用jquery“find”方法两次,但它不允许我这样做,只有“find”的第一个实例正在工作。这是我想要运行的代码......
$("#phone_numbers > p:first-child").clone(true).insertBefore("#phone_numbers > span:last-child").find('.phone_type, .phone_number, .user_phones_id').val('').find('.delete_phone').remove();
上面的代码工作得很好,除了最后一个“find”方法,它不会删除带有“.delete_phone”类的元素。
但是,如果我将代码更改为这样......
$("#phone_numbers > p:first-child").clone(true).insertBefore("#phone_numbers > span:last-child").find('.delete_phone').remove();
它确实删除了带有“.delete_phone”类的元素。我认为这是因为我不能连续两次使用“find”方法,但我不确定。
有谁知道发生了什么事,或者是否有办法绕过这个问题?
谢谢!
答案 0 :(得分:10)
您需要.end()
跳回链中(所以您不会查看之前的.find()
结果),如下所示:
$("#phone_numbers > p:first-child").clone(true).insertBefore("#phone_numbers > span:last-child").find('.phone_type, .phone_number, .user_phones_id').val('').end().find('.delete_phone').remove();
细分视图:
$("#phone_numbers > p:first-child").clone(true)
.insertBefore("#phone_numbers > span:last-child")
.find('.phone_type, .phone_number, .user_phones_id') //look in the cloned <p>
.val('') //empty those inputs
.end() //hope back to the <p>
.find('.delete_phone') //look in the clone <p>
.remove(); //remove those elements
答案 1 :(得分:1)
看起来你正在尝试将很多请求塞进一行,而你真的不需要。我不确定你的目标是什么,但我会更喜欢这样做。
相反,我们将其分解为三个简单的请求:
var numbers = $("#phone_numbers > p:first-child");//grab the data you want
numbers.insertBefore("#phone_numbers > span:last-child");//insert it where you want
$("#phone_numbers .delete_phone').remove();//remove numbers with class 'delete_phone'
不确定你要为val()部分做什么,因为你没有将值存储在变量中,也没有更改值。
如果您需要更多帮助信息。
W上。