来自DOM节点对象的JQuery对象上的.children()。innerHtml返回undefined

时间:2014-02-26 17:13:54

标签: javascript jquery html

function getTaskProperties(node) {
        var data = {};
        data.name = $(node).children(".nameHere").innerHtml;
        data.date = $(node).children(".dateHere").innerHtml;
        data.class = $(node).children(".classhere").innerHtml;
        console.log($(node).children(".nameHere")); // returns something like:
        //[p.nameHere, prevObject: n.fn.init[1], context: div#entryTemplate.entry, jquery: "1.11.0", constructor: function, selector: ""…]

        console.log($(node).children(".nameHere").innerHtml); //returns undefined
        return data;    }

    function getAllTasks() {
        var tasks = [];
        $(".entry") .each(function (i, e) {
            console.log (getTaskProperties(e));
        })
        for (var i; i<tasks.length; i++) {
            console.log(tasks[i]);
        }
    }

此脚本运行一系列HTML元素,如下所示:

<div class = "entry" id = "entryTemplate">
                <a class = "trashButton"><i class="fa fa-trash-o"></i></a>
                <p class = "classHere">History</p>
                <p class = "dateHere">Due: Monday</p>
                <p class = "nameHere">Graphic Organizer</p>
            </div>

还有一些其他元素包含在&lt; .entry&gt;

的JQuery选择器中

我的问题是,当我运行$(node).children().innerHtml时,它会返回undefined。 如何正确获取.classHere.nameHere.dateHere的值?

2 个答案:

答案 0 :(得分:2)

使用.html().text()

$(node).children(".nameHere").html();

$(node).children(".nameHere")是jQuery对象,您无法直接使用.innerHTML

<小时/> 你可以做

$(node).children(".nameHere")[0].innerHTML;

.get()

$(node).children(".nameHere").get(0).innerHTML;

答案 1 :(得分:2)

.innerHTML是一个DOM属性名称(你使用了错误的大小写)。

$(node).children(".nameHere")生成一个jQuery对象。

.innerHTML不是jQuery对象的属性(它是DOM对象的属性),因此不适用于jQuery对象。


您可以使用所有jQuery:

$(node).children(".nameHere").html()

或者您可以从jQuery对象获取DOM对象,然后使用.innerHTML,如下所示:

$(node).children(".nameHere")[0].innerHTML

作为解释 - jQuery对象和DOM对象不是一回事。它们是具有不同属性和方法的不同类型的对象。

jQuery对象包含一个DOM对象数组(在其中)。因此,当您想对DOM对象执行操作时,您可以使用jQuery方法将该方法应用于jQuery对象内的DOM对象,也可以从jQuery对象中获取DOM对象并应用DOM方法/属性直接指向DOM对象。