来自object的jQuery .html()返回undefined

时间:2015-02-19 14:34:24

标签: javascript jquery html

我正在使用以下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');
        });
    }

2 个答案:

答案 0 :(得分:3)

您正在尝试.find()元素中的元素(包含元素的jQuery对象集)本身。您必须在其父窗口之一中搜索该元素,这是一个单独的jQuery对象(在下面的示例中为<div>

试试这个:

var html = $('<div/>').append(data);
var content = html.find('#exhibit');
var menu = html.find('#index');

DEMO

答案 1 :(得分:0)

更改find()

        var content = $(data).find('#exhibit');
        var menu = $(data).find('#index');

filter()

        var content = $(data).filter('#exhibit');
        var menu = $(data).filter('#index');

<强>样本

&#13;
&#13;
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;
&#13;
&#13;