我正在使用以下javascript函数将其他网址中的内容加载到当前文档。为什么contentHtml和menuHtml未定义,我错了什么?我也不知道[prevObject..
意味着什么,这看起来不错还是已经有问题了?
function exhibitload(url) {
$.get(url, {}, function (data) {
console.log(data);
var content = $(data).find('#exhibit');
var menu = $(data).find('#index');
console.log(content); // [prevObject: n.fn.init[47], context: undefined, selector: "#exhibit", jquery: "2.1.3", constructor: function…]
console.log(menu); // [prevObject: n.fn.init[47], context: undefined, selector: "#index", jquery: "2.1.3", constructor: function…]
var contentHtml = $(content).html();
var menuHtml = $(menu).html();
console.log(contentHtml); // undefined
console.log(menuHtml); // undefined
$('#exhibit').html(contentHtml);
$('#index').html(menuHtml);
$('body').removeClass('loading');
});
}
答案 0 :(得分:3)
您正在尝试.find()
元素中的元素(包含元素的jQuery对象集)本身。您必须在其父窗口之一中搜索该元素,这是一个单独的jQuery对象(在下面的示例中为<div>
)
试试这个:
var html = $('<div/>').append(data);
var content = html.find('#exhibit');
var menu = html.find('#index');
答案 1 :(得分:0)
更改find()
:
var content = $(data).find('#exhibit');
var menu = $(data).find('#index');
至filter()
:
var content = $(data).filter('#exhibit');
var menu = $(data).filter('#index');
<强>样本强>
var data = $('body').contents();
console.log( data );
var exh = $(data).filter('#exhibit');
console.log( 'Exhibit' );
console.log( exh[0] );
var ind = $(data).filter('#index');
console.log( 'Index' );
console.log( ind[0] );
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
Here's all the data:
<div id="exhibit">Exhibit Div</div>
<div id="index">Index Div</div>
&#13;