Если вы видите исходный код jquery о методе .load()
, он делает
...
self.html(
selector ?
// Create a dummy div to hold the results
jQuery("<div>")
// inject the contents of the document in, removing the scripts
// to avoid any 'Permission Denied' errors in IE
.append(res.responseText.replace(rscript, ""))
// Locate the specified elements
.find(selector) :
// If not, just inject the full result
res.responseText
);
...
Поэтому, если предоставляется селектор (как в вашем случае), они удаляют сценарий, чтобы избежать ошибок «Отказ в доступе» в IE.
Вам нужно будет имитировать этот код, используя метод jquery .get()
что-то вроде
$("#nav a").click(function() {
$.get( this.hash.substring(1), function(response){
var dummy = $('<div>').append( response ).find('#content_inload');
$("#inload_container").html(dummy);
} );
});
Также обратите внимание, что я использовал #inload_container
в качестве целевого элемента, поскольку вы вставляли #content_inload
в себя, фактически дублируя ..
Обновление
Ну после вашего комментария я попробовал следующее, что сработало
$("#nav a").click(function() {
$.get( this.hash.substring(1), function(response){
$("#inload_container").empty().append(response).find('>*:not(#content_inload)').remove();
} );
});
Кажется, что может возникнуть проблема при создании элементов сценария в объектах jquery в памяти? ( не могу быть уверен в причине )
В вашем конкретном случае вышеприведенное решение будет работать, но оно не очень элегантно, в том смысле, что оно добавляет в DOM все, что возвращается из вызова ajax, а затем отфильтровывает то, что нам не нужно ..
Может быть, лучше всего изменить реальную видео-страницу (, загруженную из ajax ) и сделать обычный .load()
без фильтрации чего-либо ..