2010-11-24 3 views
4

Я пытаюсь использовать метод поиска «jQuery» для объекта дважды, но это не позволяет мне сделать это, только первый экземпляр «find» работает. Вот код, который я хотел бы бежать ...jQuery: нельзя использовать метод «найти» дважды на одном объекте

$("#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(); 

Приведенный выше код работает просто отлично для последнего метода «найти», за исключением, не удаляя элементы с классом «.delete_phone».

Однако, если изменить код, чтобы выглядеть следующим образом ...

$("#phone_numbers > p:first-child").clone(true).insertBefore("#phone_numbers > span:last-child").find('.delete_phone').remove(); 

Это удалить элементы с классом «.delete_phone». Я предполагаю, что это потому, что я не могу использовать метод «find» дважды подряд, но я не уверен.

Кто-нибудь знает, что происходит, или существует ли проблема вокруг этой проблемы?

Спасибо!

ответ

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 
+0

замечательный, отлично работает, спасибо! – lewisqic 2010-11-24 16:52:03

1

It похоже, вы пытаетесь втиснуть много запросов в одну строку, когда вам это действительно не нужно. Я не совсем уверен, что вы пытаетесь сделать, но я бы справился с этим больше.

Вместо давайте разбить его на три простых запросов:

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.

Смежные вопросы