2012-08-15 338 views
0

我正在使用handlebar js,並且我創建了一個幫助器。將對象轉換爲jquery對象

Handlebars.registerHelper('str', function(....) { 
    el = $(this); 
    console.log(el); 
}); 

當我在螢火EL檢查將在此格式

Object { title="Title1", day="Fri", more...} 

被分配一個對象,但它基本上是一個裏。我如何獲得對象作爲一個李,以便我可以執行操作。 enter image description here

+0

你的意思是說,你想要的裏的HTML?在這種情況下,使用$(this).html()獲取標記 – TWickz 2012-08-15 11:32:12

+0

如果你想獲得普通的DOM節點('var el = this;'),只需*不要將元素包裝到jQuery對象*中。 – 2012-08-15 11:33:01

+0

no not html ..但是作爲一個li對象,這樣我可以執行像el.find('div')等操作...等 – user1184100 2012-08-15 11:33:36

回答

0

您可以直接使用this

el = this; 

更新:

我沒有注意到 「handlebars.js」。無論如何,handlebars js處理html字符串。它不處理對象。您可以創建模板並應用數據來填充所需的html字符串。所以,如果你想添加一些可以使用jQuery檢索的數據,你必須添加一個屬性,如下所示。

<li data-name="abc">abc</li> 

可使用檢索

$("li").data("name") 

我希望下面的代碼將幫助您 的jsfiddle:http://jsfiddle.net/diode/bGJTv/

Handlebars.registerHelper('str', function(items, options) { 
    var out = '<ul>'; 

    for (var i = 0, l = items.length; i < l; i++) { 
     out = out + '<li data-mydata="' + items[i].year + '" onclick="onLiClick(event)">' + items[i].firstName + " " + items[i].lastName + '</li>'; 
    } 

    return out + '</ul>'; 
}); 



$("#entry-template").html(Handlebars.compile($("#entry-template").html())({ 
    people: [ 
     { 
     firstName: "Yehuda", 
     lastName: "Katz", 
     year: "2010"}, 
    { 
     firstName: "Carl", 
     lastName: "Lerche", 
     year: "2011"}, 
    { 
     firstName: "Alan", 
     lastName: "Johnson", 
     year: "2012"} 
    ] 
})); 


onLiClick = function (event){ 
    console.log(event.currentTarget); 
    console.log($(event.currentTarget).data("mydata")); 
} 
+0

但我想存儲類似el.data(「mydata」,「2012」);當我這樣做,我得到「el.data不是一個功能」 – user1184100 2012-08-15 11:36:20

+0

請看到更新的答案 – Diode 2012-08-15 14:46:56