如何获取活动li链接的innerHTML?

时间:2015-04-25 15:46:30

标签: javascript jquery html meteor

我想存储活动菜单项的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;。我不知道我做错了什么,因为我刚开始,我也想知道我是否走得正确。

2 个答案:

答案 0 :(得分:1)

你试过吗?

Session.set ("pageTitle",activeItem.children("a").text());

jquery text()

答案 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());