2013-08-12 1 views
3

Я использую метод .load() страниц фрагментов JQuery, чтобы перезагрузить часть моей страницы:Используйте JQuery (в) для загрузки фрагментов страницы, но только получить содержимое селектора

$("#submit").click(function() { 
    $("#box").load('/ajax/box/ #box'); 
}); 

Он работает, однако это вызывает потому что после загрузки содержимого. Поскольку эта функция по существу использует .innerHTML, она заменяет код внутри моего div. Результат HTML выглядит следующим образом:

<div id="box"> 
    <div id="box"> 
     <!-- this is my page --> 
    </div> 
</div> 

Я попытался с помощью .parent(), но удаляет все другие div сек в родителе.

$("#submit").click(function() { 
    $("#box").parent().load('/ajax/box/ #box'); 
}); 

По сути, это то, что я пытаюсь сделать (я знаю, что приведенный ниже код является недействительным, но это означает, что я пытаюсь сделать):

$("#submit").click(function() { 
    $("#box").load('/ajax/box/ $('#box').html()'); 
}); 

Есть ли способ, что я могу сделать #box be заменен#box?
Следует иметь в виду, что я не могу редактировать HTML, так что это должно произойти только с jQuery.

+0

Та же проблема здесь: http://stackoverflow.com/questions/1344030/how-can-i-use-jquery-load-to-replace-a- div-including-the-div - Рекомендуемый ответ - это вызов '$ .get', и внутри обратного вызова запускается' replaceWith' в целевом элементе. – tymeJV

+0

Это не сработает. Прочитайте комментарий в принятом ответе http://stackoverflow.com/a/5300738/1893629 – doitlikejustin

+0

Не могли бы вы использовать 'unwrap()'? Что-то вроде: '$ (" # box "). Load ('/ ajax/box/#box', function() {$ (this) .find (" # "+ this.id) .unwrap()}); ' – tymeJV

ответ

3

Просто добавьте > * после #box

$("#submit").click(function() { 
    $("#box").load('/ajax/box/ #box > *'); 
});