2014-09-23 3 views
0
$('#content').load(href + ' #content'); 

возможно загружать только содержимое #content вместо загрузки всей <div id="contents"> таким образом я могу предотвратить имея <div id="contents"><div id="contents"></div></div>?.load() содержимое DIV вместо всего DIV

Я забыл разместить обертки на большом количестве страниц, и это сэкономит мне некоторое время, если есть обходное решение.

ответ

1

Я думаю, вы можете попробовать

$('#content').load(href + ' #content > *'); 

Примечание: Если #content имеет какие-либо текстовые узлы в качестве своих детей (не потомков), то он может не работать (текстовые узлы могут не копируются)

Demo : Fiddle


Другим решением является вручную удалить вторую оболочку, если она существует, как

$('#content').load('ajax.html' + ' #content', function() { 
    if ($(this).children('#content').length) { 
     $(this).contents().unwrap() 
    } 
}); 

Демо: Fiddle

+0

Это сработало! Спасибо огромное! –

0

Почему бы не наклеить их куда-то первый, то подвинуться, что вы хотите

$(document.createElement('div')).load(href + ' #content', function (e) { 
    var elms = this.firstChild.childNodes, 
     parent = document.getElementById('content'); 
    while (elms.length) { 
     parent.appendChild(elms[0]); 
    } 
}); 
0

Метод load() в основном используется для загрузки удаленных данных ..

У вас не может быть двух элементов с одинаковым идентификатором.

$("#result").load("page.html #desiredContent"); 
+0

Я использую его для динамического загрузки страниц –

0

Функция $ .load принимает обработчик, когда запрос завершен (http://api.jquery.com/load/). Поэтому, когда вы запрашиваете сопоставленный элемент «#content» с другой страницы, полная функция возвращает только внутренний html. Что-то вроде:

$('#content').load(href + ' #content',function(data){ return data.html(); });