2012-08-15 260 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