2014-02-26 43 views
0
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元素,看起來像運行如下:。孩子()的innerHTML從DOM節點對象jQuery對象上返回undefined

<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> 

也有一對夫婦其他元素包含在JQuery選擇器中,用於<。入口>

我的問題是當我運行$(node).children().innerHtml時,它返回undefined。 我如何正確地得到.classHere.nameHere,並.dateHere價值?

回答

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對象,您可以使用將適用該法的DOM對象jQuery對象內部的jQuery的方法,也可以獲取DOM對象了jQuery對象和適用DOM方法/屬性直接傳遞給DOM對象。

2

使用.html().text()

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

$(node).children(".nameHere")是jQuery對象,你不能直接使用.innerHTML


你可以做

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

.get()

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

使用'獲得()'只是愚蠢。如果一些沒有經驗的孩子選擇它,我不會把它放在答案中。 – user1596138

+1

@Jhawins它不是你可以用'$(「李」)獲得(-1)'來獲得在列表中的最後一項。 –