我想存储活动菜单项的innerHTML,以将其显示为我的页面的标题。标题HTML是{{pageTitle}},位于"容器"模板。
这是我的(已清理)HTML
<template name="container">
{{pageTitle}
{{ > SideMenu}}
</template>
<template name="SideMenu">
<ul id="menu-items" class="nav nav-stacked nav-pills">
<li id="menu-item-simple" class="">
<a href="#">
menuItem1
</a>
</li>
<li id="menu-item-simple" class="">
<a href="#">
menuItem2
</a>
</li>
</ul>
</template>
我创建了一个帮助器来返回字符串
Template.container.helpers({
"pageTitle":function(){
return Session.get("pageTitle");
}
});
在单击菜单项时将字符串设置为正确值的事件
Template.SideMenu.events({
"click #menu-items":function(e,t){
var activeItem = $(this).find("li.active")
Session.set ("pageTitle",activeItem.children("a").innerHTML);
console.log (activeItem.children("a").innerHTML);
}
});
控制台返回&#34; undefined&#34;。我不知道我做错了什么,因为我刚开始,我也想知道我是否走得正确。
答案 0 :(得分:1)
答案 1 :(得分:0)
问题在于:
var activeItem = $(this).find("li.active")
应该是
var activeItem = $(t.find("li.active"))
我不明白为什么一个简单的this.find(“li.active”)不起作用,正如Shaunak D建议的那样
感谢您的帮助!
修改强>
似乎当事件“click#menu-items”被提出时,找到的活动li是前一个。你们知道我应该挂钩什么事件来显示当前活动的链接吗?
编辑答案
Session.set ("pageTitle",$(e.target).text());